【问题标题】:How to check iPhone keyboard klick sound turned on/off in settings?如何检查设置中打开/关闭的 iPhone 键盘点击声音?
【发布时间】:2023-03-14 12:17:01
【问题描述】:

我正在使用自定义键盘,如果在“设置”中启用,则需要播放按键的敲击声。点击声音不是问题,但如何检查键盘点击声音是否启用?谢谢。

【问题讨论】:

    标签: iphone


    【解决方案1】:

    没有记录的方法来检查这一点,但这是可能的。我不知道这是否真的算作“私有API”,所以如果你使用这种方法,请做好被拒绝的准备。

    键盘点击声音设置存储在共享的com.apple.preferences.sounds 首选项中。所以你可以试试

    return CFPreferencesGetAppBooleanValue(
            CFSTR("keyboard"),
            CFSTR("/var/mobile/Library/Preferences/com.apple.preferences.sounds"),
            NULL);
    

    (顺便说一句:在 UIKit 中播放“点击”声音的实际调用是[UIHardware _playSystemSound:1104];

    【讨论】:

    • CFPreferencesGetAppBooleanValue 调用完美运行,但我无法识别 UIHardware(或文档中的任何位置)。相反,我添加了 AudioToolkit 框架并调用 AudioServicesPlaySystemSound( 1104 ) 以获得相同的效果。
    • @Kris:那是因为 UIHardware 是一个私有类。
    • 是否有人使用CFPreferencesGetAppBooleanValue 和此设置提交了应用并获得批准?
    【解决方案2】:

    如果您想做出完美的解决方案,您应该将以下 lcode 添加到您的应用程序中。 否则在第一次读取后,设置被缓存,如果用户切换到设置,进行更改并切换回来,我们应该重新读取缓存的值。 :)

    - (void)applicationWillEnterForeground:(UIApplication *)application {
    CFPreferencesAppSynchronize(CFSTR("/var/mobile/Library/Preferences/com.apple.preferences.sounds"));
    

    如果有人告诉我如何评论这个网站,我真的会变得更有帮助。

    【讨论】:

    • 令人沮丧的是,这似乎不适用于 iOS 6.0.1。我的应用程序似乎缓存了应用程序首次加载时选择的设置值。如果我更改设置并切换回我的应用程序,它不会调整。如果我强制退出我的应用程序并重新启动,则会获取更改。我现在有一个难题:根本不提供自定义键盘中的按键点击,或者忍受在我的应用程序暂停时设置更改将被忽略的错误。哪个更糟?
    • 我检查了 6.1.4,我的应用程序总是从 Boolean keyExistsAndHasValidFormat = false; bool value = CFPreferencesGetAppBooleanValue( CFSTR("keyboard"), CFSTR("/var/mobile/Library/Preferences/com.apple.preferences.sounds"), &keyExistsAndHasValidFormat); 获取两个 vars false 所以我的代码很久以前就停止播放点击了。就这样吧,如果用户抱怨,我会直接把他们引向苹果。我们输了。
    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多