SwiftCafe 快报 - 3D Touch 实践之桌面快捷方式第二篇

SwiftCafe 快报 - 3D Touch 实践之桌面快捷方式第二篇_第1张图片
3D Touch

上一期我们介绍了如何用静态方式创建 3D Touch 桌面快捷菜单,这一期咱们继续上一期的话题,一起研究下如何用动态的方式创建 3D Touch 桌面快捷菜单。

如果需要查看上一期内容,请看这里

http://www.jianshu.com/p/5f951369f241

前面我们介绍了,创建静态菜单项,需要在 Info.plist 中设置相应的内容。创建动态菜单我们在 AppDelegateapplication(application:, didFinishLaunchingWithOptions:) 方法中,这样写即可:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        if let shortcutItems = application.shortcutItems where shortcutItems.isEmpty {

            let shortcut = UIMutableApplicationShortcutItem(type: "com.xxx.xxx2", localizedTitle: "Play", localizedSubtitle: "Play an item", icon: UIApplicationShortcutIcon(type: UIApplicationShortcutIconType.Play), userInfo: nil)

            application.shortcutItems = [shortcut]

        }



        // ...

        return true
    }

很简单,我们创建了 UIMutableApplicationShortcutItem 类的实例,然后将它赋值给 UIApplicationshortcutItems 属性。

然后我们回到桌面,按压 APP 图标,即可看到我们刚刚用动态方式创建的菜单项了:

SwiftCafe 快报 - 3D Touch 实践之桌面快捷方式第二篇_第2张图片
快捷菜单

动态快捷菜单项创建好之后,我们也要处理它的响应事件,处理动态菜单项的方式和静态菜单项一样, 在应用已经在启动并切换到后台的状态下,通过 `application(application: , performActionForShortcutItem:, completionHandler:) 方法来处理:

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {

    if shortcutItem.type == "com.xxx.xxx2" {

        //do something...

    }

}

在应用还没有启动的状态下,通过 application(application:, didFinishLaunchingWithOptions:) 方法来处理:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


    if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey] as? UIApplicationShortcutItem {

        if shortcutItem.type == "com.xxx.xxx2" {

            //do something...

        }

    }
}

无论是静态快捷菜单,还是动态快捷菜单,每个应用,最多只能够一次显示 4 个快捷菜单项。静态菜单项会优先于动态菜单项显示。

比如我们已经在 Info.plist 中设置了 4 个静态菜单项,那么即使我们又添加了新的动态菜单项,这些动态菜单也不能显示出来。

另外,动态菜单项要再应用启动一次之后,才能显示出来,因为启动一次后,菜单项才能被添加上。

关于 3D-Touch 快捷菜单交互的内容,通过这两期快报给大家做了一个大致的介绍,希望能对大家在实际应用中有所参考。

更多精彩内容可关注微信公众号:
swift-cafe

SwiftCafe 快报 - 3D Touch 实践之桌面快捷方式第二篇_第3张图片

你可能感兴趣的:(SwiftCafe 快报 - 3D Touch 实践之桌面快捷方式第二篇)