确定设备的 3D 触摸可用性



我想知道设备是否支持 3D Touch。我不喜欢使用UITraitCollectionforceTouchCapability属性,因为如果用户在设置中关闭了3D Touch,它可能会返回iPhone 6s的unavailable

我想知道硬件是否提供 3D Touch,无论设置如何。我看到的唯一可能的解决方案是检查设备的型号。但是,也许有人可以提出更稳定和简单的解决方案。

背景:我已将主屏幕操作添加到应用程序,并且只有在设备支持的情况下,我才想通知用户。

恐怕您无法检查您要求的确切功能,检查3d touch的可用性不仅与设备型号有关:

指示设备上 3D Touch 可用性的键。只 某些设备支持 3D Touch。在那些这样做的人身上,用户可以在"设置"的"辅助功能"区域中禁用3D Touch

UIForceTouchCapability

这意味着系统会告诉您的应用程序 3d touch 不可用,无论设备是否支持 3d touch,这解释了您提到的内容:

我不喜欢使用forceTouchCapability属性 UITraitCollection,因为它可能会返回不适用于iPhone 6s,如果 用户已在设置中关闭 3D Touch。

但是,您可以在应用运行时检测 3D Touch 可用性的更改,方法是实现 traitCollectionDidChange(_:(,如检查 3D Touch 的可用性一文中所述:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
// Update the app's 3D Touch support.
if self.traitCollection.forceTouchCapability == .available {
// Enable 3D Touch features
} else {
// Fall back to other non 3D Touch features.
}
}

关于:

我看到的唯一可能的解决方案是检查设备型号

就个人而言,我认为做这样的事情没有意义,因为 - 正如我上面提到的 - 它是由系统控制的;在某些时候,无论设备是否支持 3D 触摸或使用禁用了 3d touch,它都不会产生区别,它应该会导致与你的应用相同的结果。

最新更新