0

2 年前,我使用 Swift 中的 3D 触控功能制作了一款游戏,因为它非常新,但我从未发布过这款游戏,因为我得到了一份新合同。现在我有时间想发布它,但代码不再起作用。(3D 触摸自定义动作,而不是 peek & pop 动作)

当我打印触摸结果时,力值将始终返回 0.0,如下所示:

[<UITouch: 0x102613850> phase: Began tap count: 2 force: 0.000 window: <UIWindow: 0x10222bf70; frame = (0 0; 414 896); gestureRecognizers = <NSArray: 0x28011cde0>; layer = <UIWindowLayer: 0x280f41840>> view: <UIView: 0x102083080; frame = (0 82; 414 780); autoresize = RM+BM; gestureRecognizers = <NSArray: 0x2801a0c30>; layer = <CALayer: 0x280f2a540>> location in window: {299.33332824707031, 661.66665649414062} previous location in window: {299.33332824707031, 661.66665649414062} location in view: {299.33332824707031, 579.66665649414062} previous location in view: {299.33332824707031, 579.66665649414062}]

我知道 Apple 出于成本原因正在从设备中删除此功能,但我记得,iPhone 11 pro 仍然有它。有谁知道这个值是否被弃用?

4

1 回答 1

5

只要用户的手指与屏幕接触(甚至接近接触),每次触摸都从完全没有力的接触开始。当用户的手指压在屏幕上时,力才开始建立。touchesBegan 上的 UITouch 力为零


强制触摸

该技术于 2014 年 9 月 9 日在 Apple Watch 推出期间首次亮相。从 Apple Watch 开始,Force Touch 已被纳入 Apple 产品线中的许多产品中。这尤其包括 MacBook 和 Magic Trackpad 2。该技术在 iPhone 机型上被称为 3D Touch。资源

这些设备支持 Haptic Touch:

  • iPhone 11
  • iPhone 11 专业版
  • iPhone 11 专业版
  • iPhone XR

这些设备支持 3D Touch:

  • iPhone 6s
  • iPhone 6s 加
  • iPhone 7
  • iPhone 7 加
  • iPhone 8
  • iPhone 8 加
  • iPhone X
  • iPhone XS
  • iPhone XS 最大

数据源(2020 年 1 月)更改 iPhone 上的 3D 或 Haptic Touch 灵敏度

解决方案

检查设备上是否存在 3D Touch

if traitCollection.forceTouchCapability == .available {

}

iOS trait 环境通过 UITraitEnvironment 协议的 traitCollection 属性公开。该协议被以下类采用:UIScreen、UIWindow、UIViewController、UIPresentationController 和 UIView。资源

于 2020-01-20T10:40:18.503 回答