【问题标题】:3d Touch Not Available on iPhone 6s+3d Touch 在 iPhone 6s+ 上不可用
【发布时间】:2016-04-23 12:51:08
【问题描述】:

我正在尝试将 3d touch 添加到我的应用程序中。我试图让用户在 UITableViewCell 上使用强制触摸,如this project 所示。我正在运行这段代码:

if traitCollection.forceTouchCapability == UIForceTouchCapability.Available {
    registerForPreviewingWithDelegate(self, sourceView: view)
} else {
    print("unavailable")
}

我尝试在 iPhone 6s+ 上运行它,但我在日志中收到“不可用”。为什么我不能在支持 3d touch 的设备上使用 3d touch?感谢您的帮助。

【问题讨论】:

  • 你什么时候执行的代码?在viewDidLoad 或其他地方/
  • 是的,我在 viewDidLoad 中运行了这个
  • 您介意检查一下您的设备上是否启用了 3D Touch 吗?转到设置>常规>辅助功能> 3D Touch
  • 是的。它已在我的设备上启用
  • 我以前遇到过这个问题。我现在使用的解决方案是在视图控制器中覆盖traitCollectionDidChange: 并在那里访问forceTouchCapability

标签: ios swift force-touch


【解决方案1】:

刚刚找到一些关于 3D Touch API 的参考资料:根据3D Touch APIs 文档,Apple 建议开发人员阅读traitCollectionDidChange: 委托方法中的forceTouchCapability

例如,您可以使用以下方法检查视图控制器中的值:

override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    switch traitCollection.forceTouchCapability {
    case .Available:
        print("Available")
    case .Unavailable:
        print("Unavailable")
    case .Unknown:
        print("Unknown")
    }
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多