【问题标题】:No haptic feedback when testing on a actual iPhone在实际 iPhone 上测试时没有触觉反馈
【发布时间】:2021-12-18 11:15:06
【问题描述】:

我关注了Apple's guide,了解如何在我的应用中实现触觉功能。我在 iPhone 上进行了测试,但是当我触发触觉动作(点击 tableView 控制器上的按钮)时,什么也没有发生。 这是我的实现:

if supportHaptics {//line 95
            do {
                let player = try hapticsEngine.makePlayer(with: hapticPattern)
                hapticsEngine.start(completionHandler:nil)
                try player.start(atTime: 0)//line 99
                hapticsEngine.stop(completionHandler: nil)
            } catch {
                print(error)
            }
}

我很确定我的hapticsEnginehapticPattern 是有效的并且没有错误,因为如果我在第 95 行设置一个中断并逐行通过do 块,我的手机可以 在第 99 行之后振动。只是我删除断点并运行应用程序后,我的 iPhone 没有发送任何触觉反馈。

我错过了什么?任何事情都会有所帮助。

【问题讨论】:

    标签: ios swift iphone haptic-feedback


    【解决方案1】:

    您将 start 与完成处理程序参数一起使用,这意味着触觉引擎将异步工作,即在将来的某个时间工作然后停止它。在逐步调试中它可以工作,因为触觉引擎有足够的时间来执行。如果您想要同步(即立即启动),您必须调用 start() (= 没有与参数不同的参数 = nil) 来自苹果文档:

    调用触觉引擎的 start(completionHandler:) 进行异步启动,或调用 start() 同步(立即)启动引擎。

    【讨论】:

      【解决方案2】:

      好的,我解决了。请勿使用CHHapticsEngine 完成点击反馈。相反,使用下面的两行可以轻松触发点击(来自 UIKit)。

      let feedbackGenerator = UIImpactFeedbackGenerator(style: .medium)
      feedbackGenerator.impactOccurred()
      

      【讨论】:

        猜你喜欢
        • 2017-07-10
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多