如此处所要求的:Pan gesture interferes with UISlider和Gesture problem: UISwipeGestureRecognizer + UISlider我无法使UISlider以平移手势工作,因为在我的导航控制器中,我有一个具有“后退”按钮功能的类。
答案提到我应该像这样向我的班级添加一个委托
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if let view = touch.view, view == slider {
return false
}
return true
}
但是,永远不会调用此方法。我已经尝试了大约15种方法来设置此类的委托,但老实说,我不知道在委托上设置什么。
let myScreenEdgePanGestureRecognizer = UIScreenEdgePanGestureRecognizer(target: self, action:nil)
myScreenEdgePanGestureRecognizer.delegate = self
没有任何效果。有人可以清楚地说明我如何解决此问题。我已经尝试了Google的前2页中的每种方法。谢谢。
最佳答案
如果您更精确地看到this代码,则代码会将类作为UISlider而不是UISlider的对象进行检查。
所以你必须迅速写这样
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
let view = touch.view
if view is UISlider { // check class as a UISlider
return false
}
return true
}
我没有运行并检查我的代码,如果需要进行任何编辑,则需要做,如果需要任何帮助,请添加注释。
编辑
对于
UIScreenEdgePanGestureRecognizer
,请查看此帖子:https://www.hackingwithswift.com/example-code/uikit/how-to-detect-edge-swipes
关于swift - UISlider和Pan Gesture Recognizer不能混合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53607726/