Iphone 捕捉子视图触摸事件

Iphone 捕捉子视图触摸事件,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我有一个UIViewController,我在它的视图中添加了两个子视图。一个子视图是UIViewController的视图。另一个子视图是UITextField 当用户触摸另一个视图时,我需要关闭UITextField的键盘,但我不知道如何检测这些事件。UIViewController的tableView捕捉到它们并断开UIResponder链,因此我的UIViewController从未听说过它们。我不想对层次结构中的所有内容都进行子类化,这样我就可以在链的上游传递事件,那么我的选项是什么呢

我有一个UIViewController,我在它的视图中添加了两个子视图。一个子视图是UIViewController的视图。另一个子视图是UITextField

当用户触摸另一个视图时,我需要关闭UITextField的键盘,但我不知道如何检测这些事件。UIViewController的tableView捕捉到它们并断开UIResponder链,因此我的UIViewController从未听说过它们。我不想对层次结构中的所有内容都进行子类化,这样我就可以在链的上游传递事件,那么我的选项是什么呢

我应该提到的是,我是以编程的方式做所有事情的,不是IB


谢谢各位。

所以在深入研究之后,我认为没有其他办法了。响应器链从接收触摸事件的UIView开始,如果未捕获,则传递到该视图的控制器,然后传递到其superview,依此类推

显然,在UITableView中对每个UIView元素进行子类化对于这种情况来说是疯狂的过度使用


我所做的是创建一个透明的“触摸屏”视图,其框架尺寸与我的表视图相同。当键盘展开时,我将此视图添加到我的表上,当它折叠时,我将其删除。这使我能够在触碰桌面之前拦截这些触碰。

因此在深入研究之后,我认为没有其他方法。响应器链从接收触摸事件的UIView开始,如果未捕获,则传递到该视图的控制器,然后传递到其superview,依此类推

显然,在UITableView中对每个UIView元素进行子类化对于这种情况来说是疯狂的过度使用


我所做的是创建一个透明的“触摸屏”视图,其框架尺寸与我的表视图相同。当键盘展开时,我将此视图添加到我的表上,当它折叠时,我将其删除。这使我能够在触碰桌面之前拦截这些触碰。

但是您是如何设置视图来拦截触碰的?当我这样做时,触摸会直接通过。@Joe Wibble-您可能需要将UIView的userInteractionEnabled属性设置为“是”。如果它被添加到表视图中,并覆盖某些区域,它将拦截触摸。但是您是如何设置视图来拦截触摸的?当我这样做时,触摸会直接通过。@Joe Wibble-您可能需要将UIView的userInteractionEnabled属性设置为“是”。如果将其添加到表视图中,并覆盖某个区域,它将拦截触摸。