总:iOS键盘自适应高度,对于第三方键盘时方法: - (void)keyboardWillShow:(NSNotification *)aNotification 会调用三次,使得self.view.origin = CGPointMake(0,0-keyBoardHeight+64); 键盘的orgin会连续变化三次的问题暂时没有解决,求指教。
言归正传:
一:发送通知,检测键盘的弹出和收缩:
//增加监听,当键盘出现或改变时收出消息
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
//增加监听,当键退出时收出消息
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
二:当键盘弹出或者收缩是触发事件,相应方法:
#pragma mark - 键盘展示和收起时候调用
//当键盘出现或改变时调用
- (void)keyboardWillShow:(NSNotification *)aNotification
{
if ([invationView.textField isFirstResponder]) {
//获取键盘的高度
NSDictionary *userInfo = [aNotification userInfo];
NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
keyBoardHeight = keyboardRect.size.height;
[UIView animateWithDuration:0.3 animations:^{
self.view.origin = CGPointMake(0, 0-keyBoardHeight+64);
}];
}
}
//当键退出时调用
- (void)keyboardWillHide:(NSNotification *)aNotification
{
keyBoardHeight = 0;
self.view.origin = CGPointMake(0, 64);
}
就是这么简单,键盘处理至此结束,相应地操作可以在处理过程中添加。