如此处所要求的:Pan gesture interferes with UISliderGesture 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/

10-14 20:04