我有UIView,它有3个子视图,我需要处理superview和子视图上的每个触摸,但是子视图拦截触摸。我怎样才能做到这一点? 谢谢。 UPD:那么更简单的方法不存在?除了继承之外,事件变得更容易。
答案 0 :(得分:2)
您可以使用
禁用子视图接受触摸[subView setUserinteractionEnabled: NO];
这样他们就不会拦截触摸事件,只会将它们发送到父视图。
如果您希望两个视图都接收事件,您可以在子视图中捕获事件,然后手动将它们发送到父视图。
答案 1 :(得分:2)
您需要覆盖子视图中的触摸事件,如下所示:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesBegan: touches withEvent:event];
[super touchesBegan: touches withEvent: event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesMoved: touches withEvent:event];
[super touchesMoved: touches withEvent: event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self.nextResponder touchesEnded: touches withEvent:event];
[super touchesEnded: touches withEvent: event];
}