在自定义键盘扩展中播放标准 iOS 键盘点击声音

Posted

技术标签:

【中文标题】在自定义键盘扩展中播放标准 iOS 键盘点击声音【英文标题】:Play standard iOS keyboard click sound in Custom Keyboard Extension 【发布时间】:2014-07-10 04:42:04 【问题描述】:

我想知道 ios 8 中是否有新的 API 可以让您在键盘扩展中播放标准的键盘点击声音 - 并且只有在启用键盘点击且设备未处于静音状态时才播放它。我没有见过这样的API,也没有看到任何关于这个的问题。

我确实知道在以前的 iOS 版本中,如果您实现了自定义输入或键盘附件视图(通过 [[UIDevice currentDevice] playInputClick]; 在您采用 UIInputViewAudioFeedback 协议并在 enableInputClicksWhenVisible 中返回 YES),这是可能的。这只有在那些情况下才有可能。键盘扩展不是这些。

是否可以使用自定义 iOS 键盘播放输入点击?

请注意,this question 是相关的,但他们想要自定义声音,并且该解决方案不会尊重用户对播放键盘点击的偏好 - 即使该选项已被禁用,也会始终播放它们。

【问题讨论】:

***.com/a/10299080/2446155怎么样 @Joey 你找到解决方案了吗?我也很想知道这个。 @Sabo 我没有。我向 Apple 发送了增强请求。目前似乎无法做到这一点(测试版 4)。 @Joey 这个问题有什么进展吗?不能让它工作。 请注意,我的问题是如何在设置中支持用户偏好的同时实现它。我所看到的一切都不会尊重该设置,并且会一直播放。 【参考方案1】:

随便用

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),     
^
AudioServicesPlaySystemSound(1104);
);    

问题是,启用完全访问时,会播放声音,如果没有,因为它的调用是在后台线程中,不会阻塞主线程

【讨论】:

只是好奇如何获取各种声音 ID? 保存好了,我在商店里贴了一个键盘 这确实会播放声音,但即使用户在设置中禁用了键盘点击,它也会一直播放。他们肯定不明白这一点。 注意 Apple 对这种方法的警告:“这不是受支持的 API。第三方不应调用第一方系统声音。” 浪费了太多时间不为 SO 做贡献。鉴于答案有 Joey 概述的问题,我想唯一的方法是通过键盘容器应用程序的开关来使用它。我找不到更好的答案。

以上是关于在自定义键盘扩展中播放标准 iOS 键盘点击声音的主要内容,如果未能解决你的问题,请参考以下文章

播放声音的 iOS 8 自定义键盘

在自定义键盘扩展中检测输入对象视图类型

UIScreenEdgePanGestureRecognizer 在自定义键盘扩展中不起作用

iPhone:如何为自定义键盘制作按键声音?

ios) 如何在自定义键盘上方创建建议视图

点击自定义键盘按钮时如何播放铃声