我读过一些其他文章,例如 here和 here但不幸的是,我的代码中存在一些差异,无法使这些工作正常进行(因此请不要建议这些答案)。
我想在用户点击背景时关闭键盘。通常这很容易,除了我的 UITextField
对象位于 UIScrollView
内,这使得我无法捕获触摸事件(UIScrollView
> 吞掉它们,这样它们就不会到达基础 View )。解决此问题的一种方法是注册通用手势(点击),但这会捕获所有点击,包括用于提交按钮的点击。
所以基本上,“touchesBegan:withEvent:”不会工作,因为它永远不会被调用,手势也不会工作,因为它们不考虑按钮按下。
问题是:是否有某种方法可以检测 UIScrollView
上的简单点击?一旦我检测到水龙头,我就知道如何做剩下的事情。谢谢!
最佳答案
您不能在 ScrollView 的 super View 上使用touchesBegan:withEvent
,但是如何子类化 UIScrollView 并在那里处理触摸呢?然后,您可以正常继续调用 super 的实现,以避免踩到 UIScrollView 的脚趾:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Insert code to dismiss keyboard if needed */
// This makes sure scrolling proceeds normally.
[super touchesBegain:touches withEvent:event];
}
关于iPhone:当用户触摸背景时关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023002/