iOS8之后苹果能够安装第三方键盘,ide
经过断点咱们会发现使用第三方键盘以后,spa
键盘将要弹出的方法:- (void)keyBoardWillShow:(NSNotification *)notification会执行三次,code
三次的高度分别是:0:216:282。咱们发现咱们须要的是第三次的高度。server
咱们须要注册键盘隐藏和显示的通知:blog
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyBoardDidHide:) name:UIKeyboardWillHideNotification object:nil];事件
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];animation
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 }