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

时间:2017-07-26 20:37:27

标签: ios objective-c swift 3dtouch

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

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

后台:我已将forceTouchCapability添加到应用中,并且只有在设备支持时才会通知用户。

1 个答案:

答案 0 :(得分:1)

我担心您赢了能够检查您要求的确切功能,检查3d触摸的可用性仅与设备型号:

  

指示设备上3D Touch可用性的键。只要   某些设备支持3D Touch。对于那些,用户可以   在设置的辅助功能区域中禁用3D Touch。

     

UIForceTouchCapability

意味着系统告诉您的应用程序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触摸,它将不会产生影响,它应该引导相同的结果引用您的应用。