首页 > 解决方案 > UITapGestureRecognizer 在 ios13.1 中的 PDFView 上没有响应

问题描述

在 iOS 13+ 设备中未调用但在以下操作系统版本中运行良好的 PDFView 选择器方法上添加 UITapGestureRecognizer 时。

let barHideOnTapGestureRecognizer = UITapGestureRecognizer()
barHideOnTapGestureRecognizer.addTarget(self, action: #selector(gestureRecognizedToggleVisibility(_:)))
        pdfview.addGestureRecognizer(barHideOnTapGestureRecognizer)

@objc func gestureRecognizedToggleVisibility(_ gestureRecognizer: UITapGestureRecognizer) {
        if navigationController != nil {
            if !bottomView.isHidden {
                hideBars()
            } else {
                showBars()
            }
        }
    }

标签: swiftios13

解决方案


有同样的问题。Apple 为 PDFView 添加了一些自己的手势。我可以解决以下问题:

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(didTapped(_:)))
    tapGesture.numberOfTapsRequired = 1
    tapGesture.delegate = pdfView
    if let gestures = pdfView.gestureRecognizers{

        for gesture in gestures {

            if let gesture = gesture as? UITapGestureRecognizer, gesture.numberOfTapsRequired == 1{
            tapGesture.require(toFail: gesture)
            }
        }
    }

    pdfView.addGestureRecognizer(tapGesture)

同样对于 PDFView,我创建了它的子类并设置了以下 UIGestureRecognizerDelegate 方法:

class DKPDFView : PDFView {

    override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {

        return true
    }
}

推荐阅读