我想知道该设备是否支持3D Touch。我不想使用UITraitCollection
的{{3}}属性,因为如果用户在设置中关闭了3D Touch,它可能会为iPhone 6s返回unavailable
。
我想知道3D Touch是否可供硬件使用,无论设置如何。我看到的唯一可行解决方案是检查设备的型号。但是,可能有人可以建议更稳定和简单的解决方案。
后台:我已将forceTouchCapability
添加到应用中,并且只有在设备支持时才会通知用户。
答案 0 :(得分:1)
我担心您赢了能够检查您要求的确切功能,检查3d触摸的可用性不仅与设备型号:
指示设备上3D Touch可用性的键。只要 某些设备支持3D Touch。对于那些,用户可以 在设置的辅助功能区域中禁用3D Touch。
意味着系统告诉您的应用程序3d触摸不可用,无论设备是否支持3d触摸,这都解释了您提到的内容:
我不想使用的
forceTouchCapability
属性 UITraitCollection,因为它可能会返回iPhone 6s无法使用 用户已在设置中关闭了3D Touch。
但是,您可以通过实施traitCollectionDidChange(_:)文章中提到的Checking the Availability of 3D Touch来检测应用运行时对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触摸,它将不会产生影响,它应该引导相同的结果引用您的应用。