我有一个带有按钮的ScrollView。我设置了TouchupInside动作,最初能正常工作。所以我需要ScrollView在3秒内未被触摸时自动隐藏。为了实现这一点,我在ScrollView上使用了UITapGestureRecognizer。如果您在ScrollView任何位置触摸,它肯定有效。不幸的是,UIButton不再起作用。UITapGestureRecognizer似乎取代了按钮。
有什么办法让UIButton动作起作用吗?
我有一个带有按钮的ScrollView。我设置了TouchupInside动作,最初能正常工作。所以我需要ScrollView在3秒内未被触摸时自动隐藏。为了实现这一点,我在ScrollView上使用了UITapGestureRecognizer。如果您在ScrollView任何位置触摸,它肯定有效。不幸的是,UIButton不再起作用。UITapGestureRecognizer似乎取代了按钮。
有什么办法让UIButton动作起作用吗?
你可以使用以下代码来防止UITapGestureRecognizer取消其他事件:
tapRecognizer.cancelsTouchesInView = NO;
这对我起了作用 :)
另一种选择是在点击某种嵌入式控件时防止触发手势。例如:
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)
}
}