【问题标题】:UISlider and Pan Gesture Recognizer do not mixUISlider 和 Pan Gesture Recognizer 不能混用
【发布时间】:2018-12-04 07:26:25
【问题描述】:

在这里问: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 页尝试了所有方法。谢谢。

【问题讨论】:

    标签: swift pan


    【解决方案1】:

    如果您更准确地看到this 代码,那么代码将检查类作为 UISlider 而不是 UISlider 的对象。

    所以在swift中你必须这样写

    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

    【讨论】:

    • 是的,您可能是对的,但我的问题是该方法永远不会被调用。此外,我没有尝试添加操作,所以这篇文章没有帮助。
    • 您需要在视图上添加手势view.addGestureRecognizer(myScreenEdgePanGestureRecognizer)
    【解决方案2】:

    尝试声明边

    在 Swift 中它看起来像

    let myScreenEdgePanGestureRecognizer = UIScreenEdgePanGestureRecognizer(target: self, action:nil)
    myScreenEdgePanGestureRecognizer.delegate = self
    myScreenEdgePanGestureRecognizer.edges = .left //.right, .top, .bottom
    

    【讨论】:

    • 我看不到您是否将手势识别器添加到视图中。
    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多