UITapGestureRecognizer:模态视图被另一个视图覆盖

时间:2019-01-26 00:43:10

标签: swift modal-dialog gesture overlap

我有一个显示为modalPresentationStyle = .overCurrentContext的UIViewController。

此上下文视图(self.view)具有backgroundColor = .clear和一个名为content的子视图。

content是具有白色背景的完整边界宽度和一半边界高度。

我已将UITapGestureRecognizer添加到self.view,但我不能告诉您在点击重叠视图(content)时不要触发tap操作。

关于如何仅在用户点击视图而不是子视图时触发操作的想法?

1 个答案:

答案 0 :(得分:1)

您需要遵循UIGestureRecognizerDelegate,然后实现shouldReceive touch委托方法:

extension ViewController: UIGestureRecognizerDelegate {
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        if let touchView = touch.view {
            if touchView.isDescendant(of: view) {
                return false
            }
        }

        return true
    }
}

因此,如果触摸区域是subView,则点击手势将被忽略。