UITapGestureRecognizer: модальное представление перекрывается другим представлением - PullRequest
0 голосов
/ 26 января 2019

У меня есть UIViewController, который я показываю как modalPresentationStyle = .overCurrentContext.

Это представление вне контекста (self.view) имеет backgroundColor = .clear и подпредставление с именем content.

content - это ширина полных границ и половина полутонов с белым фоном.

Я добавил UITapGestureRecognizer к self.view, но не могу сказать, чтобы не запускать действие касания при нажатии на перекрывающееся представление (content).

Есть идеи, как запустить действие, только когда пользователь нажимает на представление, а не на подпредставление?

1 Ответ

0 голосов
/ 26 января 2019

Необходимо соответствовать 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
    }
}

Таким образом, если область касания является вспомогательным видом, жест касания будет игнорироваться.

...