忽略UIView上除了按钮上的触摸事件。

问题描述:

我有一个MainViewController(A)和另一个DetailedViewController(B)作为它的子视图。在“B”中,我有一个包含UIButton,UILabel和一些UIViews等UIControl的UIView。忽略UIView上除了按钮上的触摸事件。

我需要忽略此UIView中的所有触摸事件,除了按钮单击和我必须删除子视图,如果单击UIView外部。

我该如何做到这一点?

一个选项可能是在详细视图控制器中设置自定义视图。 在该视图中,您可以覆盖hittest功能。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *resultView = [super hitTest:point withEvent:event]; 

    if (![resultView isKindClass:[UIButton class]]) 
    { 
     resultView = nil; 
    } 

    return resultView; 
} 

不按钮上的按钮将被忽略。但是,如果您有一个滚动视图,并且您将开始拖动按钮,滚动视图将被忽略。