Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 处理父视图接触_Iphone_Ios_Cocoa Touch_Uikit - Fatal编程技术网

Iphone 处理父视图接触

Iphone 处理父视图接触,iphone,ios,cocoa-touch,uikit,Iphone,Ios,Cocoa Touch,Uikit,我有一个UIView,它有3个子视图,我需要在superview和子视图上处理每个触摸,但是子视图会拦截触摸。我该怎么做? 谢谢 UPD:所以不存在更简单的方法?事实证明,除了继承之外捕获事件更容易。您可以使用 [subView setUserinteractionEnabled: NO]; 这样,它们将不会截获触摸事件,并且只发送到父视图 如果希望两个视图都接收事件,可以在子视图中捕获事件,然后手动将其发送到父视图。您需要覆盖子视图中的触摸事件,如下所示: - (void)touchesBe

我有一个UIView,它有3个子视图,我需要在superview和子视图上处理每个触摸,但是子视图会拦截触摸。我该怎么做? 谢谢
UPD:所以不存在更简单的方法?事实证明,除了继承之外捕获事件更容易。

您可以使用

[subView setUserinteractionEnabled: NO];
这样,它们将不会截获触摸事件,并且只发送到父视图


如果希望两个视图都接收事件,可以在子视图中捕获事件,然后手动将其发送到父视图。

您需要覆盖子视图中的触摸事件,如下所示:

- (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];
}

我不知道你想做什么,但我认为每个电话只需要呼叫super,而不需要sefl.nextResponder。参见文档中的
-(void)touch*:with event:
,这其实不是个坏主意+1如果能听到一些关于如何最好地在子视图中捕获事件并将其手动发送到父视图的指导,那就太棒了。:]