捕获父组件中针对子组件的事件-iOS Cocoa Touch

捕获父组件中针对子组件的事件-iOS Cocoa Touch,ios,cocoa-touch,events,event-handling,Ios,Cocoa Touch,Events,Event Handling,在iOS中是否可以捕获针对父组件中的子组件的事件?类似于DOM事件模型中的事件捕获阶段 当用户在键盘外轻触时,我试图隐藏键盘。我在主视图中添加了一个这样做的事件处理程序。它通常工作正常,但是,如果被点击的元素包含自己的事件处理程序,则不会执行分配给主视图的事件处理程序,因为被点击的组件已经处理了事件 任何帮助都将不胜感激 谢谢, Michal您可以在显示键盘时在整个布局上添加一个透明视图,该视图将接收事件,或者覆盖-(BOOL)手势识别器:(uigesturecognizer*)手势识别器应接收

在iOS中是否可以捕获针对父组件中的子组件的事件?类似于DOM事件模型中的事件捕获阶段

当用户在键盘外轻触时,我试图隐藏键盘。我在主视图中添加了一个这样做的事件处理程序。它通常工作正常,但是,如果被点击的元素包含自己的事件处理程序,则不会执行分配给主视图的事件处理程序,因为被点击的组件已经处理了事件

任何帮助都将不胜感激

谢谢,
Michal

您可以在显示键盘时在整个布局上添加一个透明视图,该视图将接收事件,或者覆盖
-(BOOL)手势识别器:(uigesturecognizer*)手势识别器应接收触摸:(UITouch*)触摸所有组件中的
,在显示键盘时返回否

我不喜欢第二个选项,但第一个选项似乎很有希望。我只有一个问题。我仍然希望在用户点击屏幕和隐藏键盘时执行子组件上的处理程序。透明视图不会接收所有事件并且不会传播到子级吗?我不希望用户点击两次,首先隐藏键盘,然后执行组件的操作。请尝试在透明视图的手势识别器上将
cancelsTouchesInView
设置为“否”。如果这不起作用,请覆盖
-(BOOL)GestureRecognitor:(UIGestureRecognitor*)GestureRecognitor应接收touch:(UITouch*)touch
。在其内部,检测触摸是否通过操作(即按钮,…)点击子视图,然后关闭键盘并返回否。