Swift 3:如何在UIScrollView上检测触摸事件?

时间:2017-06-07 14:05:39

标签: swift

我使用下面的函数来检测滚动视图上的触摸事件。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 

但是这无法检测到任何触摸事件。 如何在滚动视图中检测触摸事件?

2 个答案:

答案 0 :(得分:9)

tap recognizer上设置scrollView

viewDidLoad添加以下内容:

let scrollViewTap = UITapGestureRecognizer(target: self, action: #selector(scrollViewTapped))
scrollViewTap.numberOfTapsRequired = 1
scrollView.addGestureRecognizer(scrollViewTap)

声明在点击scrollView时将调用的此函数:

func scrollViewTapped() {
    print("scrollViewTapped")
}

答案 1 :(得分:2)

为了覆盖触摸事件,您必须子类化滚动视图,如下所示:

class MyScrollView: UIScrollView {

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        print("began")
    }
}

然后使用MyScrollView作为类而不是UIScrollView,如下所示:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let myScrollView = MyScrollView(frame: self.view.frame)
        myScrollView.backgroundColor = UIColor.blue
        self.view.addSubview(myScrollView)
    }
}

我将背景设置为蓝色,以便您可以看到滚动视图正在运行。