swift - 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()
}
}
}
解决方案
有同样的问题。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
}
}