我的iOS应用中有一个UITextField。当用户输入文本并单击Return时,由于使用“resignFirstResponder”调用IBAction,键盘会消失。
但是,XCode不允许我将一行从UIView本身拖到文件所有者。如何将触摸UIView的背景与使键盘消失的IBAction相关联?
答案 0 :(得分:10)
您可以使用UITapGestureRecognizer。见:Dismiss keyboard by touching background of UITableView
因此,只需将其添加到您的视图中而不是tableview:
UITapGestureRecognizer *gestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)] autorelease];
gestureRecognizer.cancelsTouchesInView = NO; //so that action such as clear text field button can be pressed
[self.view addGestureRecognizer:gestureRecognizer];
并有一种隐藏键盘的方法
- (void) hideKeyboard {
[self.view endEditing:YES];
}
答案 1 :(得分:1)
您已经注意到,您无法从UIView拖动到文件的所有者,以便通过触摸来关联动作。
解决此问题的方法是将背景视图的类从UIView
更改为UIControl
,并将操作从此处连接到控制器中的方法以停止编辑。
那是因为UIControl可以响应触摸事件,UIView不响应,但是UIControl是UIView的子类,因此它可以代替UIView使用。
前一段时间我写了example project使用这种技术。看一下secondViewController
的xib文件,看看我是如何更改背景视图的类,并将其连接到控制器中的一个动作来关闭键盘。
答案 2 :(得分:0)
在视图中使用touchesBegan和Event并结束编辑:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
答案 3 :(得分:-1)
一种简单的方法是在视图后面创建一个大的透明UIButton。