为 iOS [Swift、iOS 15] 编写 PDF 查看器时无法激活三次轻击手势

Posted

技术标签:

【中文标题】为 iOS [Swift、iOS 15] 编写 PDF 查看器时无法激活三次轻击手势【英文标题】:Triple tap gesture cannot be activated when programming PDF Viewer for iOS [Swift, iOS 15] 【发布时间】:2021-10-25 10:26:57 【问题描述】:

我正在尝试创建一个 PDF 查看器,用户可以在其中点击三次以选择一个单词。

我希望它不会与PDFViewer 的双击手势冲突,以便用户可以双击自动缩放。

但是,我无法使用以下代码激活三次点击。

let tapgesture = UITapGestureRecognizer(target: self, action: #selector(tapGesture(_:)))
tapgesture.numberOfTapsRequired = 3
pdfView.addGestureRecognizer(tapgesture)

由于某种原因,指定tapgesture.numberOfTapsRequired = 2 时可以激活双击。但是,这会干扰双击手势,我无法使用自动缩放功能。

【问题讨论】:

【参考方案1】:

你可以通过实现shouldBeRequiredToFailBy委托方法来解决这个问题:

extension ViewController: UIGestureRecognizerDelegate 
    func gestureRecognizer(
        _ gestureRecognizer: UIGestureRecognizer,
        shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer
    ) -> Bool 
        if let tapGestureRecognizer = otherGestureRecognizer as? UITapGestureRecognizer,
           tapGestureRecognizer.numberOfTapsRequired == 2
        
            return true
        
        return false
    

并将代理设置为您的手势识别器:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapGesture))
tapGesture.numberOfTapsRequired = 3
tapGesture.delegate = self

【讨论】:

像魅力一样工作!非常感谢@Philipdukhov!

以上是关于为 iOS [Swift、iOS 15] 编写 PDF 查看器时无法激活三次轻击手势的主要内容,如果未能解决你的问题,请参考以下文章

iOS 百分比圆环曲线swift4.0实现

如何为登录屏幕ios swift编写测试用例?

iOS 15 中的 Swift 和 SwiftUI

.task 崩溃 - Swift 5.5 (iOS 15 Beta 5)

如何使用 swift 监控 ios 上的音频输入 - 示例?

iOS开发 - iOS15导航栏适配(Object-C、Swift)