1.方法一(用UITextfield的delegate)
思路:抬高self.view的高度;不流畅,会有卡顿现象;解决卡顿的方法就是加个动画,在动画里面去改变frame;比如:
[UIView animateWithDuration:0.25 animations:^{// 键盘弹起
CGRect frame = self.view.frame;
frame.origin.y -= 40;
self.view.frame = frame;
}];
屏幕快照 2016-12-28 上午9.52.08.png
其中:_priceText是需要监听的textfield
2.方法二(用通知监听键盘位移)
屏幕快照 2016-12-28 上午9.57.17.png 屏幕快照 2016-12-28 上午9.57.32.png思路:通过计算抬高需要的那一部分高度,流畅,推荐采用这个方法
其中:delta需要根据具体的控件位置来计算,就是算“SCREEN_HEIGHT - ”的后面部分(比如例子中的_loginButton.bottom-40)
总结:第二种方法可用于UITextfield和UITextView;第一种用在UITextfield;想在UITextView中使用直接换delegate及代理中的方法
相关http://www.jianshu.com/p/52925978bfbb
2.1备注:方法二中也可以直接改变tableView的frame
例如:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
- (void)keyboardWillShow:(NSNotification *)note {
CGRect keyBoardRect=[note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
self.tableView.frame = CGRectMake(0, -64, SCREEN_WIDTH, SCREEN_HEIGHT - keyBoardRect.size.height);
}
- (void)keyboardWillHide:(NSNotification *)note {
self.tableView.frame = CGRectMake(0, 0, SCREEN_WIDTH, self.view.frame.size.height - 80.);
}
3.第三方插件IQKeyboardManager
直接倒入插件即可使用,无需更多的操作
相关链接:https://www.jianshu.com/p/77d2ba569142
注意:
网友评论