鍵盤覆蓋輸入框
是一個(gè)很惡心的事厦酬,接下來是我通過算法來實(shí)現(xiàn)鍵盤
的合理處置方式:
NSDictionary *userInfo = [notif userInfo];
NSValue *animationDurationObject = userInfo[UIKeyboardAnimationDurationUserInfoKey];
NSValue *keyboardEndRectObject = userInfo[UIKeyboardFrameEndUserInfoKey];
double animationDuration = 0.f;
CGRect keyboardEndRect = CGRectZero;
[animationDurationObject getValue:&animationDuration];
[keyboardEndRectObject getValue:&keyboardEndRect];
CGPoint point1 = [selectTf convertPoint:self.scView.bounds.origin toView:self.view.window];
CGFloat height = selectTf.frame.size.height;
CGPoint changePoint = CGPointMake(0, point1.y+height>keyboardEndRect.origin.y?point1.y+height-keyboardEndRect.origin.y+self.scView.contentOffset.y:self.scView.contentOffset.y);
[self.scView setContentOffset:changePoint animated:YES];
其中的selectTf
指的是你光標(biāo)所在的那個(gè)控件卓嫂,self.scView
指的是UIScrollview
或者是UITableView
,這樣就可以通過CGPoint changePoint = CGPointMake(0, point1.y+height>keyboardEndRect.origin.y?point1.y+height-keyboardEndRect.origin.y+self.scView.contentOffset.y:self.scView.contentOffset.y);
拿到偏移量賦值給self.scView
=================================================
下邊是另外一個(gè)方法來處理這個(gè)鍵盤的問題置逻,這個(gè)也很實(shí)用就是一個(gè)第三方鍵盤IQKeyboardManager
爹橱,也可以在code4app
上看到類似demo
IQKeyboardManagerDemo,這個(gè)第三方只需要導(dǎo)入到工程中,不需要做任何設(shè)置就可以使用了仔蝌。效果如圖所示:
1.png
當(dāng)然如何你在某一個(gè)頁面不想使用這種鍵盤可以使用以下代碼屏蔽:
- 關(guān)閉第三方鍵盤
[[IQKeyboardManager sharedManager] setEnable:NO];
[[IQKeyboardManager sharedManager] setShouldToolbarUsesTextFieldTintColor:NO];
- 開始第三方鍵盤
[[IQKeyboardManager sharedManager] setEnable:YES];
[[IQKeyboardManager sharedManager] setShouldToolbarUsesTextFieldTintColor:YES];