处理父视图触摸

时间:2011-06-20 08:07:02

标签: iphone ios cocoa-touch uikit

我有UIView,它有3个子视图,我需要处理superview和子视图上的每个触摸,但是子视图拦截触摸。我怎样才能做到这一点? 谢谢。 UPD:那么更简单的方法不存在?除了继承之外,事件变得更容易。

2 个答案:

答案 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];
}