我在storyboard中创建了简单的应用程序(只有一个控制器),我把scrollview和scrollview里面的一对UITextFileds。内部控制器我添加了像
这样的功能- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.name resignFirstResponder];
[self.number resignFirstResponder];
// I have tried with and without this line but doesn't work
[self.scrollView resignFirstResponder];
}
(名称,数字是UITextField的Outlets,scrollView是UIScrollView的Outlet)。当我点击任何一个文本字段键盘弹出时,但当我完成输入后,我无法隐藏键盘。 (在以前的版本中,当我单击文本字段时,我没有滚动视图和键盘隐藏)。如何使键盘具有默认应用程序中的行为,如何隐藏?
答案 0 :(得分:3)
我假设你想要能够从键盘上轻轻一点,让它被解雇了吗?就这样做:
UITapGestureRecognizer *myTapz = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(userTapped)];
myTapz.numberOfTapsRequired=1;
myTapz.cancelsTouchesInView=NO;
[self.view addGestureRecognizer:myTapz];//or do self.WhateverYourOtherViewIsCalled..tableview? scrollView?
[myTapz release];
然后在你的选择器中:
-(IBAction)userTapped
{
[whateverYourTextFieldIsCalled resignFirstResponder];
}
答案 1 :(得分:2)
在视图控制器中:
[self.view endEditing:YES];
无论哪个字段是第一响应者,这都会解除键盘。我认为有一些例外,但对于你正在做的事情,它应该可以正常工作。
同样touchesBegan
是UIView方法,而不是UIViewController方法。如果你把它放在UIScrollView中,滚动视图的panGestureRecognizer将阻止调用touchesBegan。此外,当覆盖touchesBegan或其他触摸方法时,您通常也想要调用super。
endEditing
是解除键盘的最佳方式,因为即使添加其他字段后它也能正常工作。