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

时间:2014-09-30 00:59:02

标签: uiview uiviewcontroller touch subview touch-event

我有一个MainViewController(A)和另一个DetailedViewController(B)作为其子视图。在“B”中我有一个UIView包含一些UIControls,如UIButton,UILabel和一些UIViews。

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

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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

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

    return resultView;
}

不会忽略按钮上的触摸。但是如果你下面有一个滚动视图,你将开始拖动按钮,滚动视图将被忽略。