2015-12-18 49 views
0

的iOS 9.2時,Xcode 7.2,Objective-C的核心聚焦,objective-c中的continueUserActivity?

我用這個教程(核心焦點版),但翻譯成Objective-C的: http://code.tutsplus.com/tutorials/ios-9-introducing-search-apis--cms-24375

一切正常,除了一兩件事 - 我不能回調當用戶點擊搜索結果時。看來我需要在我的應用程序代理中編寫以下方法:

- (BOOL)application:(UIApplication *)application 
continueUserActivity:(NSUserActivity *)userActivity 
restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler 

但它根本沒有被調用。如何解決這個問題?

回答

2

你必須先檢查你的活動有類型的搜索行動:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler 
{ 
    if ([[userActivity activityType] isEqualToString:CSSearchableItemActionType]) 
    { 
     NSString *uniqueIdentifier = [userActivity.userInfo objectForKey:CSSearchableItemActivityIdentifier]; 
     NSLog(@"%@",uniqueIdentifier); 
     // Launch Detail controller 
    } 
return YES; 
} 

希望它可以幫助你!

+0

更專注地看待問題 - 我已經回答說它沒有被調用。我唯一的想法是這個教程是部分不正確的,這種方法被稱爲'NSUserActivity',而不是'核心Spotlight',這意味着至少我不能定義多個對象來處理(例如,如果我寫了瀏覽器,然後我可以運行這個瀏覽器,但不能在聚光燈下瀏覽歷史記錄中的多個頁面,並且不允許用戶訪問它們中的任何一個 –

+0

@VyachaslavGerchicov對不起!!現在我編輯了答案。您必須在目標c中實現不同的方法 – Pushpa

+0

謝謝,我會稍後再嘗試,但是我唯一不能理解的是你調用'[userActivity becomeCurrent]',所以你只有一個「activity」,但是如果我需要例如一個3最後的活動?或者'Core Spotlight'甚至在沒有明確的'NSUserActivity'聲明的情況下調用這個方法。 –