2017-10-05 2 views
0

새로운 iOS PDFKit 프레임 워크를 사용하여 백그라운드 스레드에서 검색을 실행하려고합니다.PDFKit background search

override func main() { 
    if isCancelled { 
     return 
    } 
    pdfDocument = PDFDocument.init(url: book.document.url)! 
    pdfDocument.delegate = self 
    pdfDocument.beginFindString("test", withOptions: [.caseInsensitive, .diacriticInsensitive]) (async) 
    //pdfDocument.findString("test", withOptions: [.caseInsensitive, .diacriticInsensitive]) (sync) 

    } 

문제는 PDFDocumentDelegate의 방법 중 어느 것도 호출되지되지 않는 것입니다 내가 사용하는 경우 TIME 프로파일 아무것도 일어날 것 같다. 동기화 옵션이 작동하지만 취소 할 수 없습니다..

아이디어가 있으십니까?

답변

0

대리자 메서드는 동기 findString에 대해 정상적으로 작동합니다. 당신이 통지에 의존해야 비동기 beginFindString의 경우

:

// Objective - C 
PDFDocumentDidBeginFindNotification 
PDFDocumentDidEndFindNotification 
PDFDocumentDidBeginPageFindNotification 
PDFDocumentDidEndPageFindNotification 
PDFDocumentDidFindMatchNotification 

또는

// Swift 
Notification.Name.PDFDocumentDidBeginFind 
Notification.Name.PDFDocumentDidEndFind 
Notification.Name.PDFDocumentDidBeginPageFind 
Notification.Name.PDFDocumentDidEndPageFind 
Notification.Name.PDFDocumentDidFindMatch 
+0

문제는 beginFindString'는, 백그라운드 스레드에서만'FUNC documentDidBeginDocumentFind을 (_ 통지를 아무것도하지 않는다 '이다 : 알림)'이 호출됩니다. 메인 스레드에서 모든 것이 정상적으로 작동합니다. 내 생각 엔 비동기 검색은 스레드 가드입니다. 나는 대의원과 알림도 시도했다. –