iPhone:当用户触摸背景时关闭键盘

标签 iphone objective-c cocoa-touch first-responder

我读过一些其他文章,例如 herehere但不幸的是,我的代码中存在一些差异,无法使这些工作正常进行(因此请不要建议这些答案)。

我想在用户点击背景时关闭键盘。通常这很容易,除了我的 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/

相关文章:

iphone - 当多个项目同时打开时,XCode 如何知道要调试到哪个项目?

iphone - 如何配置 MvvmCross 以持久化缓存图像

iphone - Testflight错误: This build doesn't support iPhone 5c GSM.请求开发者支持您的设备

objective-c - 以编程方式重新使用 IBOutlet

ios - NSRange 崩溃的应用程序

iphone - 将 CoreData 用于第一个 iPhone 应用程序?

objective-c - 解析器返回奇怪的脚本

ios - 在提交之前发现我的应用程序的 iTunes 链接

iphone - 在动画中切换位置属性上的 CABasicAnimation 会导致闪烁

cocoa-touch - 为什么 animateWithDuration 动画和完成 block 之间的暂停?