我使用下面的函数来检测滚动视图上的触摸事件。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
但是这无法检测到任何触摸事件。 如何在滚动视图中检测触摸事件?
答案 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)
}
}
我将背景设置为蓝色,以便您可以看到滚动视图正在运行。