说到 3D-Touch 无疑是这次 iPhone 6s 发布的最主要亮点,究竟这项技术是鸡肋还是革新,自然见仁见智。不过,它的确给了我们一个新的交互维度,只是还需要等待第三方应用们来发挥它的特性。
想想触摸屏从单点触摸到多点触摸吧,交互方式的改变,定会给我们全新的思维角度。
今天给大家介绍一下如何为应用在桌面上的快捷图标添加 3D Touch 交互 - 长按桌面图标调出快捷启动菜单。
快捷启动菜单分为两种,静态和动态。
静态快捷方式
所谓静态快捷方式,就是在应用安装前预先设置好的不能够改变的菜单项,它的设置方式是在 Info.plist 里面添加一个 UIApplicationShortcutItems
字段,如下图:
UIApplicationShortcutItems
为数组类型,里面的每一个数组项代表快捷菜单上面的一个菜单项。每一个菜单项都有下面几个属性。
- (必须)UIApplicationShortcutItemType:这个选项表示这个菜单项的唯一标识,用于在处理菜单项事件的时候区分点击的是哪一个选项。命名建议使用
com.xxx.xxx 的包名形式。 - (必须)UIApplicationShortcutItemTitle:这个选项表示菜单项显示的标题,也是必须填写,如下图:
- (可选)UIApplicationShortcutItemSubtitle:这个表示菜单项的子标题,如图所示:
- (可选)UIApplicationShortcutItemIconType:这个属性表示菜单的图标,它接受的是一个枚举值,这个枚举值表示了一系列系统预定义的图标,就像图中的箭头所指的这个:
-
(可选)UIApplicationShortcutItemIconFile:这个属性表示菜单图标的文件名,和 ** UIApplicationShortcutItemIconType** 相对应,这个属性可以让你指定自己的文件作为菜单图标,更加灵活。
-
(可选)UIApplicationShortcutItemUserInfo:这个代表了菜单项点击后,传入的用户信息,也是可选的。
我们在 Info.plist
中定义好快捷菜单后,就可以在支持 3D Touch 的设备上,按压桌面的应用图标来调出快捷菜单了。
接收快捷菜单启动
现在,我们能够正常的弹出快捷菜单了,接下来我们就需要相应快捷菜单的事件了。
快捷菜单事件一共有两个入口,如果应用已经在后台打开,就会调用 appDelegate
的 application(_:performActionForShortcutItem:completionHandler:)
方法。会传入一个 UIApplicationShortcutItem
类型的参数,代表我们点击的快捷菜单。
处理这种情况下的菜单响应,我们只需要这样:
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
if shortcutItem.type == "com.xxx.xxx" {
//do something...
}
}
像上面的代码那样,我们只需要区分出菜单的 type
属性,确定了我们点击的是哪个菜单后,进行响应的操作处理即可。
还有一个入口,就是在我们应用第一次被打开的时候,快捷菜单对象,会通过 application(_:, didFinishLaunchingWithOptions:)
方法传入,我们需要检测一下传入的信息,如果能够找到 UIApplicationShortcutItem
对象,我们就进行针对性的处理:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey] as? UIApplicationShortcutItem {
if shortcutItem.type == "com.xxx.xxx" {
//do something...
}
}
// ...
return true
}
我们对 launchOptions
数组,进行了一个判断,如果能够取到 UIApplicationShortcutItem
的实例,我们就进行处理。
现在,我们已经完成了静态快捷菜单的创建,现在咱们的 APP 就可以支持 3D Touch 桌面快捷菜单啦,充满探索心的你还不快来试试?
下期我们将继续介绍如何创建动态的桌面快捷菜单,期待吧~
更多精彩内容可关注微信公众号:
swift-cafe
网友评论