3D Touch APIs

489 阅读5分钟

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支持主屏幕静态和动态快速操作。

iOS 9为你的应用程序最多显示四个主屏幕快速操作。在此限制范围内,系统会从菜单的最顶端位置开始,首先显示你的静态快速操作。如果你的静态项目少于限制数量,并且你还定义了动态快速操作,则会显示一个或多个动态快速操作。

主屏幕静态和动态快速操作每个可以最多显示两行文字和一个图标。系统会格式化、渲染和对齐文本,并根据需要添加省略号。对于快速操作的图标,请使用UIApplicationShortcutIcon类的iconWithType:类方法提供的系统模板图标。如果你想使用自定义图标,那么它必须是一个模板(即模板样)图像,你可以使用该类的iconWithTemplateImageName:类方法创建该图像。

主屏幕快速操作功能支持Voice Over。

有关实现主屏幕快速操作的详细信息,请阅读以下资料:

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快速操作的详细信息,请阅读以下内容:

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实现:forcemaximumPossibleForce。这是iOS设备上第一次使用这些属性,可以检测并响应应用程序收到的UIEvent对象中的按压压力。

在iPhone上,按压的力量具有很高的动态范围,可用作应用程序的浮点值。

有关使用force值来自定义3D Touch实现的详细信息,请阅读以下内容: