前提介绍:

  – 在iOS 9中,默认3D Touch可以使用,但用户也可以在系统设置中把它关掉(Settings > General > Accessibility > 3D Touch) – 支持3D Touch的设备目前只有 iPhone 6s 和 iPhone 6s Plus – 支持3D Touch的最低系统为 iOS 9 – 支持3D Touch的最低版本Xcode开发工具为XCode 7 – 目前3D Touch 只能在真机设备中进行测试  


3D Touch的三大模块

  – Pressure Sensitivity:压力灵敏度。主要为UITouch类新增一些新属性,例如estimatedProperties(当前触摸对象估计的触摸特性),updatedProperties(当前触摸对象已经更新的触摸特性)等,新增的API,主要集中在获取X/Y坐标时的精度部分,如 – PreciseLocationInView:(当前触摸对象的坐标),- PrecisePreviousLocationInView:(当前触摸对象的前置坐标)等,UIForceTouchCapability,功能可用性检测。 – Peek and Pop:peek (预览)和 pop (详阅)为新引入的手势,主要可以让用户预览内容,甚至进行操作。分三阶段,(1)提示用户这里有3D Touch的交互,会使交互控件周围模糊(2)继续深按,会出现预览视图(3)通过视图上的交互控件进行进一步交互。 – Quick Actions:快捷菜单,完整名称是Home Screen Quick Actions,类似于电脑中的右键菜单,按压主屏幕的应用Icon,呼出的菜单,有静态、动态两种方式。  


参考demo

GHTouchDemo :https://github.com/sally1021/GHTouchDemo,接下来通过demo做解析。


静态/动态ShortcutItem

  – 静态方式在info.plist中进行配置 – 动态则通过UIApplicationShortcutItem等API进行代码动态处理 – 系统默认会优先展示静态的Actions。若App安装后从未打开时,则默认只会展示静态Actions,只有至少完整启动一次之后,动态Actions才会出现 – 最多可以创建四个,包括静态、动态  

静态

  在info.plist文件中添加一个UIApplicationShortcutItems的数组,数组中添加的元素就是对应的静态标签 1 必填项(下面两个键值是必须设置的): UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串 UIApplicationShortcutItemTitle 这个键值设置标签的标题 选填项(下面这些键值不是必须设置的): UIApplicationShortcutItemSubtitle 设置标签的副标题 UIApplicationShortcutItemIconType 设置标签Icon类型 UIApplicationShortcutItemIconFile  设置标签的Icon文件 UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)  

动态

  1、动态Item,通过代码添加的,有三个相关的类: – UIApplicationShortcutItem 创建3DTouch标签的类 – UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类 – UIApplicationShortcutIcon 创建标签中图片Icon的类 2、application:didFinishLaunchingWithOptions:中 – 新建shortcutItem – 判断launchOptions字典内的UIApplicationLaunchOptionsShortcutItemKey是否为空,用于区别是否是从shortCutItem进入的app,如果是则处理结束逻辑后,返回NO

快捷菜单显示效果,如下图: IMG_0034  


ShortcutItem的响应

  重写appdelegate中的一个回调方法,实现shortcutitem点击事件的响应:

ViewController中接受通知,并实现gotoDetailVc方法,做各个页面跳转


peek/pop

  1、目标UIViewController接受UIViewControllerPreviewingDelegate协议

2、注册Peek和Pop方法

3、实现Peek和Pop手势的代理方法

效果如图: IMG_0035  


Action

  peek动作后,弹出ActionViewController,往上移动就会出现Action。 ActionViewController中实现previewActionItems:

效果如图:

IMG_0036

 


参考文档: https://developer.apple.com/ios/3d-touch/


发表评论

电子邮件地址不会被公开。 必填项已用*标注