忽略UIView上的触摸事件(按钮除外)。

忽略UIView上的触摸事件(按钮除外)。,uiview,uiviewcontroller,touch,subview,touch-event,Uiview,Uiviewcontroller,Touch,Subview,Touch Event,我有一个MainViewController(a)和另一个DetailedViewController(B)作为它的子视图。在“B”中,我有一个UIView,其中包含一些uicontrol,如UIButton、UILabel和一些UIView 我需要忽略此UIView中的所有触摸事件(按钮单击除外),如果在UIView之外单击,我必须删除子视图 如何完成此操作?一个选项可能是在详细视图控制器中设置自定义视图。 在该视图中,您可以覆盖hittest功能 - (UIView *)hitTest:(C

我有一个MainViewController(a)和另一个DetailedViewController(B)作为它的子视图。在“B”中,我有一个UIView,其中包含一些uicontrol,如UIButton、UILabel和一些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;
}
不在按钮上的触摸将被忽略。但是如果你有一个滚动视图在它下面,你将开始拖动按钮上的滚动视图将被忽略