小编典典

具有 UITapGestureRecognizer 的视图内的 UIButton

all

我有一个视图UITapGestureRecognizer。因此,当我点击视图时,该视图上方会出现另一个视图。这个新视图有三个按钮。当我现在按下这些按钮之一时,我没有得到按钮动作,我只得到点击手势动作。所以我不能再使用这些按钮了。我该怎么做才能让事件通过这些按钮?奇怪的是按钮仍然突出显示。

在收到点击后,我不能只删除 UITapGestureRecognizer。因为有了它,新视图也可以被删除。意味着我想要 像全屏视频控件这样的行为


阅读 62

收藏
2022-07-13

共1个答案

小编典典

您可以将控制器或视图(无论哪个创建手势识别器)设置为UITapGestureRecognizer.
然后在委托中你可以实现-gestureRecognizer:shouldReceiveTouch:.
在您的实现中,您可以测试触摸是否属于您的新子视图,如果是,则指示手势识别器忽略它。类似于以下内容:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // test if our control subview is on-screen
    if (self.controlSubview.superview != nil) {
        if ([touch.view isDescendantOfView:self.controlSubview]) {
            // we touched our control surface
            return NO; // ignore the touch
        }
    }
    return YES; // handle the touch
}
2022-07-13