特定手势的同时手势识别

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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
    

【讨论】:

以上是关于特定手势的同时手势识别的主要内容,如果未能解决你的问题,请参考以下文章