我设计了一个具有以下层次结构的应用程序:
UIViewController
UIView
UIScrollView
UITextField
在我做过的ViewDidLoad上:
...
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
tapGesture.cancelsTouchesInView = NO;
[self.scrollView addGestureRecognizer:tapGesture];
...
在hideKeyboard上我做了:
- (void) hideKeyboard {
//Hide keyBoard
[self.view endEditing:YES];
}
乍一看,它完美无缺,但不幸的是有一个问题。
当应用程序运行时,我们可以单击UITextField键盘按预期显示。如果我们单击UITextField侧,则调用方法hideKeyboard
并按预期关闭键盘,但如果您再次单击UITextField,键盘将不会再次显示。
我做错了什么?有人知道吗?
答案 0 :(得分:1)
每次需要用户反馈时都要处理这个问题。如果苹果在即将推出的框架版本中包含这样的日常功能,将会非常有用。
有一百一个建议的解决方案,用于在编辑过程中如何将UITextField和UITextView移出键盘 - 通常,它归结为观察
但我发现的所有提议的解决方案往往都是DIY,必须为每个需要它的视图控制器实现。
解决方案由Michael Tyson提供...... 用于将文本字段移出键盘的插入式通用解决方案 您可以在GitHub project page.
上获取包含示例项目的源文件答案 1 :(得分:0)
试试这个..
- (void) hideKeyboard
{
//Hide keyBoard
[self.view endEditing:YES];
[self.scrollView bringSubViewToFront:YourTextField];
}
答案 2 :(得分:0)
我曾经想要检测滚动视图上的触摸,类似于UIView上的触摸。
要访问滚动视图上的触摸,如触摸开始和触摸结束,其他此类方法我将UIScrollView子类化,并且我能够访问滚动视图上的所有触摸事件。
如果您想在UIView和UIScrollView上访问触摸事件,请尝试这样做。