如果我理解正确,则检测到touchesEnded 事件,但不是由需要了解它的子视图检测到。我认为这可能对你有用:
在一个通用文件中,将 TOUCHES_ENDED_IN_SUPERVIEW 定义为 @"touches end in superview"。
在触发的包含视图的 touchesEnded 方法中,添加
[[NSNotificationCenter defaultCenter] postNotificationName: TOUCHES_ENDED_IN_SUPERVIEW object: self];
在子视图的 touchesBegan 中,添加
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(touchesEnded:)
name: TOUCHES_ENDED_IN_SUPERVIEW
object: self.superview];
在子视图的 touchesEnded 方法中,对事件使用您的正常逻辑,并添加
[[NSNotificationCenter defaultCenter] removeObserver: self name: TOUCHES_ENDED_IN_SUPERVIEW object: self.superview];
记得把 [[NSNotificationCenter defaultCenter] removeObserver: self] 放在你的 dealloc 中,以防在没有收到 touchesEnded 事件的情况下离开页面。
您可能希望通知将其消息发送到一个特殊的 touchesEndedInSuperview 方法,该方法将调用 touchesEnded 本身,但这取决于在这种情况下您是否需要进行任何特殊处理。