iOS8以后苹果可以安装第三方键盘,
通过断点我们会发现使用第三方键盘之后,
键盘将要弹出的方法:- (void)keyBoardWillShow:(NSNotification *)notification会执行三次,
三次的高度分别是:0:216:282。我们发现我们需要的是第三次的高度。
我们需要注册键盘隐藏和显示的通知:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyBoardDidHide:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
1 #pragma mark–键盘显示事件 2 3 - (void)keyboardWillShow:(NSNotification *)notification { 4 CGFloat curkeyBoardHeight = [[[notification userInfo] objectForKey:@"UIKeyboardBoundsUserInfoKey"] CGRectValue].size.height; 5 CGRect begin = [[[notification userInfo] objectForKey:@"UIKeyboardFrameBeginUserInfoKey"] CGRectValue]; 6 CGRect end = [[[notification userInfo] objectForKey:@"UIKeyboardFrameEndUserInfoKey"] CGRectValue]; 7 8 // 第三方键盘回调三次问题,监听仅执行最后一次 9 if(begin.size.height>0 && (begin.origin.y-end.origin.y>0)){ 10 11 CGFloat keyBoardHeight = curkeyBoardHeight; 12 13 NSLog(@"第三次:%f",keyBoardHeight); 14 [UIView animateWithDuration:0.05 animations:^{ 15 self.bgView.hidden = NO; 16 self.commentToolView.y = kScreenHeight - keyBoardHeight - 44; 17 18 }]; 19 } 20 } 21 22 #pragma mark–键盘隐藏事件 23 24 -(void)keyBoardDidHide:(NSNotification *)notification{ 25 NSLog(@"键盘隐藏"); 26 self.bgView.hidden = YES; 27 self.commentToolView.y = kScreenHeight; 28 }