【问题标题】:Core Spotlight, continueUserActivity in objective-c?核心聚焦,objective-c中的continueUserActivity?
【发布时间】:2016-01-05 16:51:06
【问题描述】:

iOS 9.2、xCode 7.2、Objective-C

我使用了本教程(Core Spotlight 版本),但将其翻译成 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

但它根本没有被调用。如何解决这个问题?

【问题讨论】:

    标签: ios objective-c uiapplication corespotlight nsuseractivity


    【解决方案1】:

    您必须首先检查您的活动是否具有类型搜索操作:

    - (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;
    }
    

    希望对你有帮助!!

    【讨论】:

    • 仔细看看这个问题——我已经回答过它没有被调用。我唯一的想法是本教程部分不正确,并且此方法被称为NSUserActivity,而不是Core Spotlight,这意味着至少我无法定义多个要处理的对象(例如,如果我编写浏览器,那么我可以运行它浏览器,但无法在聚光灯下查看历史记录中的多个页面,并且不允许用户转到其中的任何一个
    • @VyachaslavGerchicov 对不起!现在我编辑了答案。您必须在目标 c 中实现不同的方法。
    • 谢谢,我稍后试试。但我唯一不明白的是你打电话给[userActivity becomeCurrent],所以你同时只有一个“活动”。但是,如果我需要例如最后 3 个活动的队列怎么办?或者即使没有明确的NSUserActivity 声明,Core Spotlight 也应该调用此方法。
    • 终于解决了。我编辑的应用程序不是我自己的,有几个应用程序委托,只有一个继承了我需要的 UIApplicationDelegate
    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2011-07-04
    • 2015-07-13
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多