UISlider和Pan Gesture Recognizer不能混合使用

时间:2018-12-04 07:26:25

标签: swift pan

如此处的要求: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

没有任何效果。有人可以清楚地解释我如何解决此问题。我已经尝试了谷歌的前2页的每种方法。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您更准确地看到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

答案 1 :(得分:0)

尝试声明边

在Swift中,它看起来像

print(create_random())