在 iOS 应用程序中,我有一个交互,我想同时播放敲击声:
AudioServicesPlaySystemSound(1104)
和轻触感:
self.feedbackGenerator = [[UISelectionFeedbackGenerator alloc] init];
[self.feedbackGenerator prepare];
//then later
[self.feedbackGenerator selectionChanged];
这可以正常工作,除非用户的声音->系统触觉设置关闭。在这种情况下,声音播放的声音比应有的要大得多。如果我从代码中删除触觉调用,声音会正常播放。
我已经在 iPhone 11 Pro/iOS 14.4.1 上确认了上述内容,但我在其他 iOS 14 iPhone 上也收到了相关报告。一位使用 iOS 13 的测试人员没有遇到此问题。
声音/触觉的顺序不会改变结果。
如果我将其中一个或另一个延迟 0.25 秒,一切正常,但延迟太长(听起来或感觉不对)。如果我使用非常短的延迟(例如 0.01 秒),就会出现问题。
每个iOS:如何检查是否启用了触觉反馈(iOS 设置),无法检测系统触觉设置的状态,否则如果禁用,我会跳过触觉步骤。
Apple 提供了这一点,表明声音和触觉应该协同工作:
如果您想在触觉反馈中包含声音,则需要手动播放声音并将其与触觉同步。- https://developer.apple.com/documentation/uikit/uifeedbackgenerator
知道这里发生了什么吗?预期的行为?iOS 漏洞?解决方法?