【问题标题】:Simultaneous gesture recognition for specific gestures特定手势的同时手势识别
【发布时间】:2015-06-14 13:31:38
【问题描述】:

我正在尝试启用同时手势识别,但仅适用于 UIPinchGestureRecognizerUIRotationGestureRecognizer 手势。我不希望它适用于任何其他手势。如果我将以下属性设置为 true,它允许同时识别所有手势,如何将其限制为仅旋转和缩放?

func gestureRecognizer(UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

【问题讨论】:

    标签: swift uigesturerecognizer


    【解决方案1】:

    确保你的类实现UIGestureRecognizerDelegate

    class YourViewController: UIViewController, UIGestureRecognizerDelegate ...
    

    将手势的delegate设置为self

    yourGesture.delegate = self
    

    为您的班级添加委托功能

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        if (gestureRecognizer is UIPanGestureRecognizer || gestureRecognizer is UIRotationGestureRecognizer) {
            return true
        } else {
            return false
        }
    }
    

    【讨论】:

    • 别忘了让自己成为 UIGestureRecognizerDelegate
    • 别忘了设置 yourGesture.delegate = self
    • @budidino 我在 UIImageView 的子类上添加手势。我启用了 userInteraction,设置了两个手势的委托,但它仍然不会调用委托方法。
    • @Skywalker 我在同一条船上(UIViewUIScrollView 中的子类):添加了所有内容,但从未调用过函数。你解决了吗?
    【解决方案2】:

    swift 5.1 任意 2 美分

    // 假设您需要更喜欢捏而不是平移:

    //UIGestureRecognizerDelegate
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith shouldRecognizeSimultaneouslyWithGestureRecognizer: UIGestureRecognizer) -> Bool {
    
            if gestureRecognizer is UIPinchGestureRecognizer {
                return true
            }
            return false
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多