通过通知监听键盘的弹出与消失,并在输入框和键盘之间添加一个灰色的view
当键盘出现增加监听
//增加监听,当键盘出现或改变时收出消息
[[NSNotificationCenterdefaultCenter]addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
当键退出时增加监听
//增加监听,当键退出时收出消息
[[NSNotificationCenterdefaultCenter]addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
获取到键盘高度后添加一个View 并添加手势点击
//当键盘出现或改变时调用
- (void)keyboardWillShow:(NSNotification*)aNotification
{
//获取键盘的高度
NSDictionary*userInfo = [aNotificationuserInfo];
NSValue*aValue = [userInfoobjectForKey:UIKeyboardFrameEndUserInfoKey];
CGRectkeyboardRect = [aValueCGRectValue];
intheight = keyboardRect.size.height;
grayBack= [[UIViewalloc]initWithFrame:CGRectMake(0,64, [UIScreenmainScreen].bounds.size.width,[UIScreenmainScreen].bounds.size.height-64-height)];
grayBack.backgroundColor= [UIColorgrayColor];
grayBack.alpha=0.3;
[self.viewaddSubview:grayBack];
UITapGestureRecognizer*tapGestureRecognizer = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(keyboardHide:)];
//设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
tapGestureRecognizer.cancelsTouchesInView=NO;
//将触摸事件添加到当前view
[self.viewaddGestureRecognizer:tapGestureRecognizer];
}
//当键退出时调用
- (void)keyboardWillHide:(NSNotification*)aNotification{
[grayBackremoveFromSuperview];
}
-(void)keyboardHide:(UITapGestureRecognizer*)tap{
[_SearchTextFieldresignFirstResponder];
}