在手机上每次输入键盘都会自动打开,但是输入完之后键盘确不会自动隐藏。我感觉这是个蛋疼的设计,苹果干嘛不直接写个像UIActionSheet那样的东西,点击背景就可以隐藏键盘。不过IOS是高手设计的,高手写的东西自有它存在的道理,我等渣渣还是以后再去揣摩吧……
有两种方法可以实现隐藏键盘:
1 2 3 4
| [self.view endEditing:true];
[textField resignFirstResponder];
|
其中[self.view endEditing:true];
可以让整个view取消所有第一响应者;[textField resignFirstResponder];
只可以让那个相应的textField取消第一响应。
FirstResponder
第一响应对象指的是窗口中,应用程序认为最适合处理事件的对象。当点击了textFiled之后,textField就成为了第一响应对象。这时键盘就会弹出来。
然后有几种实现方式
第一种:调用touchesBegan函数
1 2 3 4
| -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [_textField resignFirstResponder]; }
|
第二种:在背景上自定义一个手势
1 2 3 4 5 6 7 8 9 10 11
| - (void)viewDidLoad { [super viewDidLoad]; _textField.delegate = self; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(tapAction)]; [self.view addGestureRecognizer:tap]; }
- (void)tapAction{ [_textField resignFirstResponder]; }
|
现在点击背景就可以隐藏键盘了
第三种:通过点击return键隐藏键盘
按下键盘的return键会调用-(void)textFieldDidEndEditing:(UITextField *)textField
这个方法,所以通过这个方法也可以实现键盘的隐藏
1 2 3 4
| -(void)textFieldDidEndEditing:(UITextField *)textField{ [_textField resignFirstResponder]; }
|
或者
1 2 3 4 5 6 7
| -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if ([string isEqualToString:@"\n"]){ [textField resignFirstResponder]; } return YES; }
|
效果图:
最后注意,textField要设置代理 _textField.delegate = self;