2017-10-05 125 views
0

我想在后台线程上使用新的iOS PDFKit框架进行搜索。PDFKit背景搜索

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的方法不叫,如果我使用的时间探查好像没有什么改变。 同步选项有效,但无法取消

任何想法?

回答

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(_通知:通知)'被调用。在主线程中一切正常。我的猜测是异步搜索有一个线程后卫。我也尝试了委托和通知。 –