swift 检查 3D Touch 是否可用
swift check if 3D Touch is possible
在我的应用程序中,我将显示设置,如果设备支持 3D Touch,这些设置应该是可见的。目前我检查设备是否有 ios9。
if #available(iOS 9.0, *)
问题是,例如 iPhone 6 有 iOS 9 但没有 3D Touch。如何使用 swift 检查 3D Touch 的可能性?
我找到了这个 post,但没有 swift 解决方案:
还有一个问题。
现在我想检查 iOS 9 AND 3D Touch 是否可用。
我试试这个:
if (#available(iOS 9.0, *)) AND (is3DTouchAvailable() == true) {
但我总是得到这个错误:
Expected '{' after 'if' condition
试试这个 swift 代码,self
指的是你的 UIViewController
func is3DTouchAvailable() -> Bool
{
return self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
}
是的,if self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
会起作用,只需确保将其包裹在 if #available(iOS 9, *)
中
Peek 和 Pop 的示例:
override func viewDidLoad()
{
super.viewDidLoad()
if #available(iOS 9, *) {
if (traitCollection.forceTouchCapability == .Available) {
if let collectionView = self.collectionView {
registerForPreviewingWithDelegate(self, sourceView: collectionView)
}
}
}
}
此外,如果您有一个 UITouch 对象(您可以通过 touchesBegan
、touchesMoved
、...等方法获得它),如果您的设备支持 3D Touch,则 touch.maximumPossibleForce
属性 将高于 0。不要忘记将其包裹在 if #available(iOS 9, *)
中;)
欢迎查看此 Peek and Pop tutorial for more details, or this sample of 3D Touch code
在我的应用程序中,我将显示设置,如果设备支持 3D Touch,这些设置应该是可见的。目前我检查设备是否有 ios9。
if #available(iOS 9.0, *)
问题是,例如 iPhone 6 有 iOS 9 但没有 3D Touch。如何使用 swift 检查 3D Touch 的可能性?
我找到了这个 post,但没有 swift 解决方案:
还有一个问题。 现在我想检查 iOS 9 AND 3D Touch 是否可用。 我试试这个:
if (#available(iOS 9.0, *)) AND (is3DTouchAvailable() == true) {
但我总是得到这个错误:
Expected '{' after 'if' condition
试试这个 swift 代码,self
指的是你的 UIViewController
func is3DTouchAvailable() -> Bool
{
return self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
}
是的,if self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
会起作用,只需确保将其包裹在 if #available(iOS 9, *)
Peek 和 Pop 的示例:
override func viewDidLoad()
{
super.viewDidLoad()
if #available(iOS 9, *) {
if (traitCollection.forceTouchCapability == .Available) {
if let collectionView = self.collectionView {
registerForPreviewingWithDelegate(self, sourceView: collectionView)
}
}
}
}
此外,如果您有一个 UITouch 对象(您可以通过 touchesBegan
、touchesMoved
、...等方法获得它),如果您的设备支持 3D Touch,则 touch.maximumPossibleForce
属性 将高于 0。不要忘记将其包裹在 if #available(iOS 9, *)
中;)
欢迎查看此 Peek and Pop tutorial for more details, or this sample of 3D Touch code