1

저는 Swift의 QLPreviewController에서 작업하고 있습니다. 지금까지 PDF를 푸시하거나 프레젠테이션하는 대신 하위 그래프에 추가하여 표시 할 수있었습니다. 이렇게하면 내 문서의 맨 아래에 사용자 지정 도구 모음이 있고 맨 위에 사용자 지정 탐색 도구가 있습니다.QLPreviewController 및 touchesBegan 메서드

이제 내 QLPreviewController보기에 touchesBegan 메소드를 사용할 수 있어야합니다.

몇 가지 연구를하고 있었는데 QLPreviewController의 하위 클래스를 만들고 viewDidAppear을 재정의하고 UITapGestureRecognizer를 추가해야합니다.

제 질문은 QLPreviewController의 하위 클래스를 만드는 방법입니다.

다음과 같이 표시 되나요? 여기

import UIKit 
import QuickLook 

class QLPreview: QLPreviewController { 

    override func viewDidLoad() 
    { 
     //Do UITapGestureRecognizer 
    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) 
    { 
     //Touch QLPreviewController view 
    } 

    func detectPan(recognizer:UIPanGestureRecognizer) 
    { 

    } 


} 

내가

viewPDF = QLPreviewController() 

     viewPDF.dataSource = self 

     viewPDF.delegate = self 

     viewPDF.view.frame = CGRectMake(0, 60, 375.0, 667.0) 

     self.view.addSubview(viewPDF.view) 

     viewPDF.view.userInteractionEnabled = true 

     self.navigationController?.toolbarHidden = false 
     self.navigationController?.navigationBarHidden = false; 

을 하위 뷰를 위해 QLPreviewController보기를 추가하고 여기에 어떤 도움은 매우

UPDATE를 감상 할 수있다

func numberOfPreviewItemsInPreviewController(controller: QLPreviewController) -> Int { 
     return 1 
    } 

    func previewController(controller: QLPreviewController, previewItemAtIndex index: Int) -> QLPreviewItem { 

     PDFTitle.title = fileNameGroup 

     let localUrl = String(format:"%@/%@", PDFFilePath, fileNameGroup) 
     let url = NSURL.fileURLWithPath(localUrl) 

     return url 
    } 

내 대리자 메서드가 어떻게

import UIKit 
import QuickLook 

class QLPreview: QLPreviewController, UIGestureRecognizerDelegate { 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     self.view.frame = CGRectMake(0, 60, 375.0, 667.0) 

     let panRecognizer = UIPanGestureRecognizer(target:self, action: #selector(QLPreview.detectPan)) 

     self.view.userInteractionEnabled = true 

     self.view.addGestureRecognizer(panRecognizer) 
    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) 
    { 
     print("touching") 
    } 

    func detectPan(recognizer:UIPanGestureRecognizer) 
    { 
     print("detect") 
    } 

} 

을 등처럼 추가 : 23,414,가 여기에 지금까지 무엇을 가지고 있습니다 .... 난 그렇게처럼 내 서브 클래스를 다시 썼다

let preview = QLPreview() 

     preview.delegate = self 
     preview.dataSource = self 

     self.view.addSubview(preview.view) 

을하지만 여전히 내 인쇄 방법이 표시되지 않습니다.

답변

1

나는 아직 논평 할 명성이 없다.

질문에 대답하려면 QLPreviewController를 올바르게 서브 클래 싱하는 것입니다. 그러나 인쇄 방법이 작동하지 않는 것은 완전히 다른 문제입니다. 제스처 인식기를 QLPreviewController와 함께 사용하는 것은 매우 어렵습니다.

알려 주시면 알려 드리겠습니다.

+1

나는 UIWebView를 사용하여 내 PDF를로드하기로 결정했습니다 ...이 기능은 챔피언처럼 작동합니다. – user979331

+0

똑똑한 솔루션, 공유해 주셔서 감사합니다. – Groarus