iOS 9提供了下面这些3D Touch APIs:
- 主屏幕快速操作API用于向应用图标添加快捷方式,以预测和加速用户与你的应用的互动。
- UIKit的peek和pop API可让你在应用内轻松访问其他内容,同时维护用户的上下文。使用peek快速操作API为应用程序的按压和按压保持操作提供按压复位。
- Web View peek和pop API允许你为HTML的链接目标启用系统预览。
- UITouch的force属性允许你基于用户按压定制的用户交互行为添加到你的应用程序。
无论你使用哪个API,你的应用程序都必须在运行时检查3D Touch的可用性。
检查3D Touch的可用性
要在运行时检查设备是否支持3D Touch,并在任何有trait environment的对象中读取trait collection中的forceTouchCapability属性的值(请参阅UITraitEnvironment Protocol Reference)。用户可以在应用程序运行的任何时候关闭3D Touch,因此请在实现traitCollectionDidChange:方法中读取这个属性。
为确保所有用户都可以访问你的应用功能,请根据3D Touch是否可用来分别编写你的代码。当它可用时,利用3D Touch功能。 当它不可用时,通过使用触摸和长按来提供替代方法,用UILongPressGestureRecognizer类实现。
请参阅iOS人机界面指南,了解如何使用支持3D Touch的设备为用户增强应用的互动,同时不会让其他用户无法体验功能。
屏幕快速操作
iOS 9支持主屏幕静态和动态快速操作。
- 静态快速操作可以在应用安装后立即被用户使用。在应用程序的
Info.plist
文件中的UIApplicationShortcutItems数组中定义主屏幕静态快速操作。 - 动态快速操作将在第一次启动应用后可以使用。使用UIApplicationShortcutItem、UIMutableApplicationShortcutItem和UIApplicationShortcutIcon类定义主屏幕动态快速操作。使用shortcutItems属性将动态快速操作添加到应用程序的共享UIApplication对象中。
iOS 9为你的应用程序最多显示四个主屏幕快速操作。在此限制范围内,系统会从菜单的最顶端位置开始,首先显示你的静态快速操作。如果你的静态项目少于限制数量,并且你还定义了动态快速操作,则会显示一个或多个动态快速操作。
主屏幕静态和动态快速操作每个可以最多显示两行文字和一个图标。系统会格式化、渲染和对齐文本,并根据需要添加省略号。对于快速操作的图标,请使用UIApplicationShortcutIcon类的iconWithType:类方法提供的系统模板图标。如果你想使用自定义图标,那么它必须是一个模板(即模板样)图像,你可以使用该类的iconWithTemplateImageName:类方法创建该图像。
主屏幕快速操作功能支持Voice Over。
有关实现主屏幕快速操作的详细信息,请阅读以下资料:
- iOS人机界面指南中的主屏幕快速操作和模板图标
- ApplicationShortcuts:使用UIApplicationShortcutItems(示例代码)
- 信息属性列表键(Info.plist文件Key值)参考中的UIApplicationShortcutItems
- UIApplicationShortcutItem类参考
- UIMutableApplicationShortcutItem类参考
- UIApplicationShortcutIcon类参考
UIKit Peek and Pop
iOS 9允许你为view controller配置peek的用户功能,当用户按压指定的视图时,它提供额外内容的预览,以及pop,它可以查看该内容并导航到该视图。
为了支持3D Touch设备上的peek and pop,iOS 9 SDK包括:
- UIViewController类中用于注册和取消注册一个view controller支持3D Touch的新方法。
- 支持3D Touch的新的view controller delegate。
你可以选择给预览视图控制器配置一组peek快速操作或深层链接。用户可以通过向上滑动看到快速操作。
为了支持peek快速操作,iOS 9 SDK包括:
有关实现peek and pop以及执行peek快速操作的详细信息,请阅读以下内容:
- iOS人机界面指南中的3D Touch。
- UIViewController类参考中的registerForPreviewingWithDelegate:sourceView:和unregisterForPreviewingWithContext:方法的描述。
- UIViewControllerPreviewing Protocol参考,它描述了3D Touch触发视图控制器的上下文对象调用的接口。
- UIViewControllerPreviewingDelegate协议参考,它描述用于响应用户按压的预览视图控制器(以用户术语来说是peek)的界面,以及用于响应更深入的按压来提供跳转的视图控制器(用户术语中是pop)。
- UIPreviewAction类参考,它描述了一个peek快速操作
- UIPreviewActionGroup类参考,它描述了peek快速操作的分组式子菜单。
- UIPreviewActionItem协议参考,它描述了peek快速操作调用的接口
- ViewControllerPreviews:使用UIViewController预览的API(示例代码)
Web View Peek and Pop
在Web View中,你可以使用新的allowLinkPreview
属性为链接和检测到的数据启用peek and pop。 在iOS 9中,该属性在推荐的WKWebView类(在WebKit框架中)和较旧的UIWebView类(在UIKit框架中)中都可用。
通过Safari服务框架中的SFSafariViewController(Safari view controller)类自动peek链接和检测到的数据。
Force Properties in UITouch Objects
UITouch类有两个新属性来支持你在应用中自定义3D Touch实现:force和maximumPossibleForce。这是iOS设备上第一次使用这些属性,可以检测并响应应用程序收到的UIEvent对象中的按压压力。
在iPhone上,按压的力量具有很高的动态范围,可用作应用程序的浮点值。
有关使用force值来自定义3D Touch实现的详细信息,请阅读以下内容:
- UITouch类参考中的force和maximumPossibleForce属性的描述。
- TouchCanvas:高效地使用UITouch(示例代码)