美文网首页swiftiOS开发3D TOUCH
SwiftCafe 快报 - 3D Touch 实践之桌面快捷方

SwiftCafe 快报 - 3D Touch 实践之桌面快捷方

作者: SwiftCafe | 来源:发表于2015-10-14 07:23 被阅读836次
    3D Touch 快捷方式

    说到 3D-Touch 无疑是这次 iPhone 6s 发布的最主要亮点,究竟这项技术是鸡肋还是革新,自然见仁见智。不过,它的确给了我们一个新的交互维度,只是还需要等待第三方应用们来发挥它的特性。

    想想触摸屏从单点触摸到多点触摸吧,交互方式的改变,定会给我们全新的思维角度。

    今天给大家介绍一下如何为应用在桌面上的快捷图标添加 3D Touch 交互 - 长按桌面图标调出快捷启动菜单。

    快捷启动菜单分为两种,静态动态

    静态快捷方式

    所谓静态快捷方式,就是在应用安装前预先设置好的不能够改变的菜单项,它的设置方式是在 Info.plist 里面添加一个 UIApplicationShortcutItems 字段,如下图:

    Info.plist 声明 3D Touch 快捷菜单

    UIApplicationShortcutItems 为数组类型,里面的每一个数组项代表快捷菜单上面的一个菜单项。每一个菜单项都有下面几个属性。

    • (必须)UIApplicationShortcutItemType:这个选项表示这个菜单项的唯一标识,用于在处理菜单项事件的时候区分点击的是哪一个选项。命名建议使用
      com.xxx.xxx 的包名形式。
    • (必须)UIApplicationShortcutItemTitle:这个选项表示菜单项显示的标题,也是必须填写,如下图:
    菜单项标题 title.png
    • (可选)UIApplicationShortcutItemSubtitle:这个表示菜单项的子标题,如图所示:
    菜单项子标题
    • (可选)UIApplicationShortcutItemIconType:这个属性表示菜单的图标,它接受的是一个枚举值,这个枚举值表示了一系列系统预定义的图标,就像图中的箭头所指的这个:
    菜单项图标
    • (可选)UIApplicationShortcutItemIconFile:这个属性表示菜单图标的文件名,和 ** UIApplicationShortcutItemIconType** 相对应,这个属性可以让你指定自己的文件作为菜单图标,更加灵活。

    • (可选)UIApplicationShortcutItemUserInfo:这个代表了菜单项点击后,传入的用户信息,也是可选的。

    我们在 Info.plist 中定义好快捷菜单后,就可以在支持 3D Touch 的设备上,按压桌面的应用图标来调出快捷菜单了。

    接收快捷菜单启动

    现在,我们能够正常的弹出快捷菜单了,接下来我们就需要相应快捷菜单的事件了。

    快捷菜单事件一共有两个入口,如果应用已经在后台打开,就会调用 appDelegateapplication(_: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

    相关文章

      网友评论

      • LIAM_7:明白挺多东西的!其实我还想知道点击shortcut后要怎么跳转到相应的界面

      本文标题:SwiftCafe 快报 - 3D Touch 实践之桌面快捷方

      本文链接:https://www.haomeiwen.com/subject/rrdocttx.html