老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

iOS中表單列表樣式鍵盤被遮擋如何解決

這篇文章將為大家詳細(xì)講解有關(guān)iOS中表單列表樣式鍵盤被遮擋如何解決,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)西云機(jī)房的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗(yàn)和案例。

具體實(shí)現(xiàn)分以下幾步:

  • 監(jiān)聽鍵盤彈起和收起事件

  • 計(jì)算鍵盤高度

  • 計(jì)算contentoffset的y值要改變的差值并修改contentoffset的值

  • 滑動列表時收起鍵盤

  • 鍵盤收起時還原contentoffset的值

iOS中表單列表樣式鍵盤被遮擋如何解決
圖1

下面一起來通過代碼實(shí)現(xiàn)這個5步

第一步__設(shè)置監(jiān)聽

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardAction:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardAction:) name:UIKeyboardWillHideNotification object:nil];

第二步__計(jì)算高度

// 鍵盤監(jiān)聽事件
- (void)keyboardAction:(NSNotification*)sender{
 NSDictionary *useInfo = [sender userInfo];
 NSValue *value = [useInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
 //鍵盤高度
 CGFloat height = [value CGRectValue].size.height;
 if ([sender.name isEqualToString:UIKeyboardWillShowNotification]) {
   //鍵盤彈起時
 } else {
   //鍵盤收起時
 } 
}

第三步__計(jì)算contentoffset的y值要改變的差值并修改contentoffset的值

我們以點(diǎn)擊第7個輸入框?yàn)槔?dāng)點(diǎn)擊第7個輸入框的時候,我們想要的效果是讓第7個輸入框跑到鍵盤上邊,如圖2所示

iOS中表單列表樣式鍵盤被遮擋如何解決

圖2

那么這里我們就要計(jì)算一下需要向上移動的距離delta=3-(2-1),2是list的高度,1是鍵盤的高度,3是第7個輸入框所在cell的maxY值-當(dāng)前l(fā)ist的contentoffset的y值,如圖3,

iOS中表單列表樣式鍵盤被遮擋如何解決

圖3

1和2我們很好獲得,重點(diǎn)是獲取3的值,我們只要獲取到第7個輸入框所在cell的實(shí)例,然后通過CGRectGetMaxY(cell.frame)即可獲得此值。下邊是獲取到cell實(shí)例的代碼

- (UICollectionViewCell *)firstResponderCell {
 __block UICollectionViewCell *cell = nil;
 [self.collectionView.visibleCells enumerateObjectsUsingBlock:^(__kindof UICollectionViewCell * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  UICollectionViewCell *visibleCell = obj;
  //焦點(diǎn)所在的textField
  if (visibleCell.textField.isFirstResponder) {
   cell = visibleCell;
  }
 }];
 return cell;
}

計(jì)算差值改變contentoffset

// 鍵盤監(jiān)聽事件
- (void)keyboardAction:(NSNotification*)sender{
 NSDictionary *useInfo = [sender userInfo];
 NSValue *value = [useInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
 //鍵盤高度
 CGFloat keyboardHeight = [value CGRectValue].size.height;
 //列表的高度
 CGFloat collectionViewHeight = self.collectionView.frame.size.height;
 if ([sender.name isEqualToString:UIKeyboardWillShowNotification]) {
  //鍵盤彈出時
  //獲取輸入框焦點(diǎn)所在的cell
  UICollectionViewCell *cell = [self firstResponderCell];
  if (cell) {
   //cell的maxY值
   CGFloat cellMaxY = CGRectGetMaxY(cell.frame)- self.collectionView.contentOffset.y;
   //差值 = 3 -(2-1)
   if (cellMaxY > collectionViewHeight-keyboardHeight) {
    //記錄delta值,鍵盤收起恢復(fù)原來位置時使用
    self.delta = cellMaxY-(collectionViewHeight-keyboardHeight);
    self.collectionView.contentOffset = CGPointMake(0, self.collectionView.contentOffset.y+self.delta);
   }
  }
 } else {
   //鍵盤收起時
 }
 
}

第四步__滑動列表時收起鍵盤

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
 UICollectionViewCell *cell = [self firstResponderCell];
 if (cell) {
  [cell.textField resignFirstResponder];  
 }
}

第五步__鍵盤收起時還原contentoffset的值

// 鍵盤監(jiān)聽事件
- (void)keyboardAction:(NSNotification*)sender{
 NSDictionary *useInfo = [sender userInfo];
 NSValue *value = [useInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
 //鍵盤高度
 CGFloat keyboardHeight = [value CGRectValue].size.height;
 //列表的高度
 CGFloat collectionViewHeight = self.collectionView.frame.size.height;
 if ([sender.name isEqualToString:UIKeyboardWillShowNotification]) {
  //鍵盤出現(xiàn)時
 } else {
  //鍵盤收起時
  //根據(jù)self.delta復(fù)原
  self.collectionView.contentOffset = CGPointMake(0, self.collectionView.contentOffset.y-self.delta);
  self.delta = 0
 }
}

關(guān)于iOS中表單列表樣式鍵盤被遮擋如何解決就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享題目:iOS中表單列表樣式鍵盤被遮擋如何解決
文章鏈接:http://www.xueling.net.cn/article/ihggoi.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 久久久天堂国产精品女人 | 69av在线视频 | 天天操天天干天天操天天干 | 欧美成人a视频 | 黑人40厘米全部进去A片 | 欧美一区永久视频免费观看 | 久久久噜噜噜久久久 | 无码专区一va亚洲v专区在线 | 亚洲不卡一区二区三区四区 | 欧美a级免费观看 | 亚洲黄色网络 | 成人国产精品久久久春色 | 欧美日韩亚洲精品一区二区三区 | 欧美性在线视频 | 日本XXXWWW在线观看 | 久久综合狠狠综合久久综合88 | 久久www免费人成看片入口 | 国产午夜福利在线机视频 | 18禁无遮挡无码国产免费网站 | 久久免费精品国自产拍网站 | 国产亚洲精品一区二区在线观看 | 少妇被躁爽到高潮无码 | 99ri国产精品 | 日韩精品一区二区三区免费观影 | 国产一区在线观看免费 | 一级肉体全黄裸片 | 成人在线中文字幕 | 免费黄色在线视频 | 国产又粗又猛又爽又黄的视频软件 | 国产猛男GAYB0Y1069麻豆 | 四虎亚洲精品私库AV在线 | 91桃色黄色 | 久久99精 | 青青青在线视频观看 | 精品人妻中文字幕无码蜜桃臀 | 国内精品久久久久影院优 | 久草久草久草久草 | 国产三及片网站 | 中文字幕精品视频 | 日韩国产在线观看 | 国产日韩欧美三区 |