UITextField详解:3-UITextField的代理方法实例之键盘回收
所谓键盘回收就是当用户完成输入后,把弹出的键盘进行隐藏操作。隐藏键盘的操作除了用户完成输入后需要执行,还需要考虑到一些其他的用户交互情况下也需要隐藏键盘,例如,当用户切换输入框或者是用户在屏幕的任意位置进行了点击,此时都应该考虑把弹出的键盘进行回收。此篇文章我们用UITextFieldDelegate中的代理方法实现键盘的回收功能。
键盘回收简介
在实际的开发过程中,如下几种情形需要我们考虑回收键盘:
- 用户完成了输入,点击了键盘中的完成按钮、返回按钮或继续按钮等
- 用户点击了屏幕的任意位置,此时有可能是用户希望进行其他的操作,也需要隐藏键盘
当我们需要进行键盘回收时,可以使用如下两种方法。这两种方法的本质是相同的,都是释放视图对象的第一响应者。
- 调用UIResponder类的resignFirstResponder方法
- (BOOL)resignFirstResponder;
- 调用UITextField类的endEditing:方法,该方法本质上是对UIResponder类的resignFirstResponder:进行了封装
- (BOOL)endEditing:(BOOL)force;
示例代码
下方的示例代码实现了对一个UITextField对象进行键盘回收的过程,当用户点击键盘的完成键时,或者点击屏幕的任意位置时,都可以回收键盘。
- 准备工作。创建一个UITextField类的属性,并对该属性进行懒加载操作,设置其外观属性。并且设置控制器类遵守UITextFieldDelegate协议。
@interface ViewController ()<UITextFieldDelegate>
@property(nonatomic,strong) UITextField *textField;
@end
-(UITextField *)textField {
if (_textField == nil) {
_textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 250, 50)];
_textField.backgroundColor = [UIColor whiteColor];
_textField.placeholder = @"欢迎访问99iOS";;
_textField.textAlignment = NSTextAlignmentCenter;
_textField.borderStyle = UITextBorderStyleRoundedRect;
_textField.returnKeyType = UIReturnKeyDone;
_textField.delegate = self;
}
return _textField;
}
- (void)viewDidLoad {
[super viewDidLoad];
//添加textField对象到控制器view
[self.view addSubview:self.textField];
}
- 当用户点击键盘的完成键时,调用endEditing:方法实现键盘回收
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField endEditing:YES];
return YES;
}
- 当用户点击屏幕任意位置时,会调用touchesBegan:withEvent:方法,在该方法中也添加释放键盘的操作。
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.textField resignFirstResponder];
}
https://github.com/99ios/7.7.3
文章发布时间为: November 29th , 2016 at 11:17 pm
最后编辑时间为: September 14th , 2017 at 09:34 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 14th , 2017 at 09:34 am
本文由 99ios 创作,转载请注明出处