在写聊天时,希望输入框随键盘一起弹起,具体做法如下:
还有如果是第三方键盘导致的键盘回调三次的坑,也可以通过如下方法解决
1,先注册监听方法:
在这里注意:一定要是监听的"UIKeyboardWillShowNotification"和"UIKeyboardWillHideNotification",不然会出现意想不到的结果, 我就是因为把"UIKeyboardWillShowNotification"写成了"UIKeyboardDidShowNotification", 结果输入框会有多次跳动的感觉(第三方键盘导致的键盘回调三次的坑)
- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];
}
2, 键盘将要出现时的响应方法如下:
这样输入框就会随键盘一起弹出了
- (void)keyboardWasShown:(NSNotification*)aNotification {
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
self.keyboardHeight = kbSize.height;
// 获取键盘动画时间
CGFloat animationTime = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
// 定义好动作
void (^animation)(void) = ^void(void) {
self.editView.frame = CGRectMake(0, self.tableView.qp_bottom, SCREEN_WIDTH, 500);
};
if (animationTime > 0) {
[UIView animateWithDuration:animationTime animations:animation];
} else {
animation();
}
3, 键盘将要消失时的响应方法如下:
- (void)keyboardWillBeHidden:(NSNotification*)aNotification {
NSLog("键盘将要消失");
}
4, 在dealloc方法中一定要移除观察者
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
网友评论