關于鍵盤遮擋tableview中的textfield問題,偶然發現新方法

因項目需求,一個頁面中有十幾個輸入框用于提交。每個cell樣式都一樣,直接一個cell就實現。
上方的輸入框點擊后鍵盤不會遮擋,下方的會遮擋,一開始也是像網上說得那樣,設置tableview的偏移,但輸入完后必須點擊完成或者別的地方收縮鍵盤,才可下次輸入,且tabelview不可滾動。
我先解決鍵盤不能滾動的問題,就不用tableview的偏移,直接縮小tableview的高度,讓tableview的高度變為原來的高度減去鍵盤的高度。這樣在鍵盤上方的tableview也能滑到底部且不會被鍵盤遮擋,這里用鍵盤出現消失的通知不再多說。
不可滾動解決了,開始解決偏移,又嘗試了獲取cell在tableview中的坐標位置,偏移到那一點,效果是實現了,但是不是在鍵盤正上方,效果不理想。
之后就把代碼刪了,只剩縮小tableview高度了,一運行,哎?被遮擋的textfield自動便宜到鍵盤之上了,檢查代碼,就只有兩點,一個是textfield 加了個事件,是開始編輯事件,在事件里將當前的textfield設為第一響應者,之后鍵盤彈出縮小tableview高度。
代碼

[textfield addTarget:self action:@selector(beginedit:) forControlEvents:UIControlEventEditingDidBegin];

-(void)beginedit:(UITextField*)textfield{
     [textfield becomeFirstResponder];
}

-(void)keyBoardWasShowd:(NSNotification*)keyboardNotification{
    NSDictionary*info=[keyboardNotification userInfo];
    CGSize keyboardSize=[[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;
    CGRect begin = [[[keyboardNotification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
    CGRect end = [[[keyboardNotification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    
//獲取不同的鍵盤高度,取最后顯示的鍵盤高度作為當前鍵盤
if(begin.size.height>0 && (begin.origin.y-end.origin.y>0)){
   [UIView animateWithDuration:0.2 animations:^{
   self.tableView.frame=CGRectMake(0,_tableView.frame.origin.y,Screen_Width,Screen_Height-64-keyboardSize.height);
    }];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,229評論 4 61
  • 研究生即將畢業的前一年,自己找公司實習,去面試時發現公司老板加員工共5個人。象征性的測試之后,老板讓我去他辦公室面...
    素心綻閱讀 612評論 14 12
  • 曾幾何時,喬布斯對我們心靈上的震撼,就是一句話,原來像他這樣的奇葩也有春天!后來看到仿佛人生開掛的埃隆.馬斯克,心...
    通靈半藏閱讀 259評論 0 1
  • 云鶴欲下山院門,水仙早居此地深。藍蝶無意草穎穎,碧空有情雨紛紛。地頭冷,天邊溫,一簾秋夢誰鋪陳?皓月落入湖...
    abe4c0570901閱讀 249評論 0 2