【发布时间】:2023-03-14 12:17:01
【问题描述】:
我正在使用自定义键盘,如果在“设置”中启用,则需要播放按键的敲击声。点击声音不是问题,但如何检查键盘点击声音是否启用?谢谢。
【问题讨论】:
标签: iphone
我正在使用自定义键盘,如果在“设置”中启用,则需要播放按键的敲击声。点击声音不是问题,但如何检查键盘点击声音是否启用?谢谢。
【问题讨论】:
标签: iphone
没有记录的方法来检查这一点,但这是可能的。我不知道这是否真的算作“私有API”,所以如果你使用这种方法,请做好被拒绝的准备。
键盘点击声音设置存储在共享的com.apple.preferences.sounds 首选项中。所以你可以试试
return CFPreferencesGetAppBooleanValue(
CFSTR("keyboard"),
CFSTR("/var/mobile/Library/Preferences/com.apple.preferences.sounds"),
NULL);
(顺便说一句:在 UIKit 中播放“点击”声音的实际调用是[UIHardware _playSystemSound:1104];)
【讨论】:
AudioServicesPlaySystemSound( 1104 ) 以获得相同的效果。
CFPreferencesGetAppBooleanValue 和此设置提交了应用并获得批准?
如果您想做出完美的解决方案,您应该将以下 lcode 添加到您的应用程序中。 否则在第一次读取后,设置被缓存,如果用户切换到设置,进行更改并切换回来,我们应该重新读取缓存的值。 :)
- (void)applicationWillEnterForeground:(UIApplication *)application {
CFPreferencesAppSynchronize(CFSTR("/var/mobile/Library/Preferences/com.apple.preferences.sounds"));
如果有人告诉我如何评论这个网站,我真的会变得更有帮助。
【讨论】:
Boolean keyExistsAndHasValidFormat = false; bool value = CFPreferencesGetAppBooleanValue( CFSTR("keyboard"), CFSTR("/var/mobile/Library/Preferences/com.apple.preferences.sounds"), &keyExistsAndHasValidFormat); 获取两个 vars false 所以我的代码很久以前就停止播放点击了。就这样吧,如果用户抱怨,我会直接把他们引向苹果。我们输了。