UITapGestureRecognizer在滚动视图上重写了UIButton的操作

19

我有一个带有按钮的ScrollView。我设置了TouchupInside动作,最初能正常工作。所以我需要ScrollView在3秒内未被触摸时自动隐藏。为了实现这一点,我在ScrollView上使用了UITapGestureRecognizer。如果您在ScrollView任何位置触摸,它肯定有效。不幸的是,UIButton不再起作用。UITapGestureRecognizer似乎取代了按钮。

有什么办法让UIButton动作起作用吗?

2个回答

49

你可以使用以下代码来防止UITapGestureRecognizer取消其他事件:

tapRecognizer.cancelsTouchesInView = NO;

这对我起了作用 :)


0

另一种选择是在点击某种嵌入式控件时防止触发手势。例如:

class ViewController: UIViewController {

    @IBOutlet var tapGestureRecognizer: UITapGestureRecognizer!
    override func viewDidLoad() {
        super.viewDidLoad()
        tapGestureRecognizer.delegate = self
    }

}

extension ViewController: UIGestureRecognizerDelegate {
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        !(touch.view is UIControl)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接