我2年前使用Swift中的3D触摸功能制作了一个游戏,因为它很新,但由于获得了新合同,所以我从未发布过该游戏。现在我有时间要发布它,但是代码不再起作用。 (3D触摸自定义操作,而不是窥视和弹出操作)
当我打印触摸结果时,力值将始终返回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}]
我知道苹果公司正在从设备中删除此功能,原因是成本高昂,但我记得,iPhone 11 pro仍然具有它。有人知道该值是否已被弃用吗?预先感谢您的宝贵帮助。
每次触摸都从完全没有力的接触开始,用户的手指与屏幕接触(甚至接近接触)。仅当用户的手指受压时才开始建立力在屏幕上。 UITouch force on touchesBegan is zero
强制触摸
[该技术于2014年9月9日,苹果手表的介绍。从Apple Watch开始,Force苹果公司阵容中的许多产品都采用了Touch技术。这尤其包括MacBook和Magic Trackpad 2。该技术在iPhone机型上被称为3D Touch。 source
这些设备支持触觉触摸:
这些设备支持3D Touch:
数据源(2020年1月)Change 3D or Haptic Touch sensitivity on your iPhone
解决方案>>
检查设备上是否存在3D Touch
if traitCollection.forceTouchCapability == .available { }
iOS trait环境通过traitCollection公开UITraitEnvironment协议的属性。该协议被采用通过以下类:UIScreen,UIWindow,UIViewController,UIPresentationController和UIView。 source