特定手势的同时手势识别

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
    

【讨论】:

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

将平移手势识别器限制为特定圆圈

如何在ios中的特定collectionview单元格上应用手势识别器

两个手势同时被识别

同时使用 touch down 和 touch up 手势识别器

如何使用 2 个手势识别器同时接收事件?

iOS图形手势识别框架SGGestureRecognizer