PDFView (UIViewer) 无法识别屏幕边缘手势 [Swift, iOS 15, PDFKit]

Screen edge gesture is not recognized in PDFView (UIViewer) [Swift, iOS 15, PDFKit]

我正在显示 PDF 文件并想添加屏幕边缘手势来移动页面。

当 PDF 的全部内容显示在屏幕上时,以下代码可以正常工作。但是,当PDF被缩放时,屏幕边缘手势甚至无法激活。

override func viewDidLoad(){
        super.viewDidLoad()


    //set up gesture to swipe from the edge
    let leftScreenEdgeRecognizer = UIScreenEdgePanGestureRecognizer (
        target: self, action: #selector(TextDocumentViewController.leftEdgePanGestureHandler(_ : )))
    leftScreenEdgeRecognizer.edges = UIRectEdge.left
    
    let rightScreenEdgeRecognizer = UIScreenEdgePanGestureRecognizer (
        target: self, action: #selector(TextDocumentViewController.rightEdgePanGestureHandler(_ : )))
    rightScreenEdgeRecognizer.edges = UIRectEdge.right
    
    //register the gesture
    pdfView.addGestureRecognizer(leftScreenEdgeRecognizer)
    pdfView.addGestureRecognizer(rightScreenEdgeRecognizer)
}



//gesture functions here
@objc func leftEdgePanGestureHandler(_ sender: UIScreenEdgePanGestureRecognizer){     
        if(sender.state == UIGestureRecognizer.State.ended){
        print ("Left Edge")
        pdfView.goToPreviousPage(sender)
    }
    
}

@objc func rightEdgePanGestureHandler(_ sender: UIScreenEdgePanGestureRecognizer){
        if(sender.state == UIGestureRecognizer.State.ended){
        print ("right Edge")
        pdfView.goToNextPage(sender)
    }
}

我厌倦了添加这样的代码,

 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
            return true
        }

然而,这根本不起作用。

感谢为我的老问题提供的答案,我能够解决这个问题。我完全忘记了 post。在通过试错法了解了更多关于多个手势检测的知识后,我意识到我可以按照以下方法解决这个 posted 问题:

启用多手势激活:

class ViewController: UIViewController, UIGestureRecognizerDelegate,  UIDocumentPickerDelegate, PDFViewDelegate {
// ... other things
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, 
    shouldRecognizeSimultaneouslyWith otherGestureRecognizer: 
    UIGestureRecognizer) -> Bool {
            return true
        }
}

确保正确设置 delegate

override func viewDidLoad(){
        super.viewDidLoad()

        //set gesture
        leftScreenEdgeRecognizer.delegate = self
        rightScreenEdgeRecognizer.delegate = self
}