[英]Issues with dismiss keyboard using Tap Gesture when UITextField is inside UIScrollView.
我设计的应用程序具有以下层次结构:
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
调用hideKeyboard
方法的方法, hideKeyboard
预期方式关闭键盘,但是如果尝试再次单击UITextField,则不会再次显示键盘。
我做错了什么? 有人知道吗
它是每次需要用户反馈时都要处理的非常普遍的问题。 如果Apple在即将到来的框架版本中包含此类日常功能,将非常有帮助。
对于如何在编辑过程中将UITextField和UITextView移出键盘的方式,有一百一十种建议的解决方案-通常归结为观察
但是我发现的所有建议的解决方案往往都是完全DIY的,必须为每个需要它的视图控制器实现。
解决方案由Michael Tyson提供... 用于将文本字段移出键盘的嵌入式通用解决方案您可以在GitHub项目页面上获取源文件,其中包括一个示例项目。
尝试这个..
- (void) hideKeyboard
{
//Hide keyBoard
[self.view endEditing:YES];
[self.scrollView bringSubViewToFront:YourTextField];
}
我曾经想检测滚动视图上的触摸,类似于UIView上的触摸。
为了访问滚动视图上的触摸,如触摸开始和触摸结束,以及其他此类方法,我将UIScrollView子类化,并且能够访问scrollview上的所有触摸事件。
如果要访问UIView和UIScrollView上的触摸事件,请尝试执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.