再进行TextField和TextView的输入过程中,必然涉及到键盘的收回。
<1>点击键盘以外区域,收回键盘。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
这种方式应用较为广泛,但在使用过程中要注意接收点击事件的View是不是控制器的View,如果不是,self.view需要进行更改。
<2>点击键盘右下角完成键(return),收回键盘。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
这种方式比较常用在TextField的控件上,需要实现TextField的代理。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {//按下return键,textView会当做\n使用
[textView resignFirstResponder];
return NO;
}
return YES;
}
这种方式比较常用在TextView的控件上,这样实现的话会有一个小缺点,输入中将没有换行功能,同样也要实现TextView的代理。
<3>通过inputAccessoryView添加一个View,在View中添加按钮,点击事件为撤销键盘。
//用于撤销键盘
UIView *back = [[UIView alloc]initWithFrame:CGRectMake(0, 0, DE_UISCREEN_WIDTH, 30)];
back.backgroundColor = [UIColor whiteColor];
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(DE_UISCREEN_WIDTH - 50, 5, 40, 20)];
[button setTitle:@"完成" forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[button addTarget:self action:@selector(cancelKey) forControlEvents:UIControlEventTouchUpInside];
[back addSubview:button];
_addressDetile.inputAccessoryView = back;
其中cancelKey方法里的代码为:[self.view endEditing:YES];同样像本文方法一种注意View的归属性,这种方法一般多用于界面多个输入框的情况,比图添加个人信息之类的控制器。
本文实际上说明了四种方式,希望能对大家有所帮助。