在 Swift 中无法识别点击手势(手势开始)

Posted

技术标签:

【中文标题】在 Swift 中无法识别点击手势(手势开始)【英文标题】:Tap gesture (gesture began) not recognised in Swift 【发布时间】:2021-01-28 03:59:27 【问题描述】:

UITapGestureRecogniser 开始状态未被识别,只有结束状态被识别。

override func viewDidLoad() 
     let tapgr = UITapGestureRecognizer(target: self, action: #selector(tapTrigger(recongizer:)))
     bottomBar.addGestureRecognizer(tapgr)


@objc func tapTrigger(recongizer: UITapGestureRecognizer)
        if recongizer.state == .began
            print("recognised") // does not print
        else if recogniser.state == .ended
           print("ended") //prints
        

我要做的是在识别触摸时突出显示视图(而不是添加识别器的视图),并在取消触摸时取消突出显示。

【问题讨论】:

点击手势识别器是单一的不连续的。它没有中间状态 有没有办法实现上述行为? 提到的行为没有很好的定义,所以你需要更清楚地定义它。 点击被“取消”是什么意思? 【参考方案1】:

您可以使用UILongPressGestureRecognizer 而不是使用UITapGestureRecognizer 来获得不同的状态。

像这样:

let tapgr = UILongPressGestureRecognizer(target: self, action: #selector(tapTrigger(recongizer:)))
tapgr.minimumPressDuration = 0
bottomBar.addGestureRecognizer(tapgr)

@objc func tapTrigger(recongizer: UITapGestureRecognizer)
        if recongizer.state == .began
            print("recognised") 
         else if recongizer.state == .ended
           print("ended") //prints
        

【讨论】:

以上是关于在 Swift 中无法识别点击手势(手势开始)的主要内容,如果未能解决你的问题,请参考以下文章

使用点击手势识别器时,IOS swift应用程序无法正常工作

Swift:手势识别器无法识别的选择器发送到实例

Swift - 如何将点击手势添加到 UIViews 数组?

在 uiimageview 上无法识别点击手势

无法将点击手势识别器添加到 SwiftUI MKMapView UIViewRepresentable

SWIFT4:如何让两个点击手势识别器一起工作