2010-04-24 13 views

Respuesta

4

Si desea realizar la solución perfecta, se debe añadir la siguiente lcode a su aplicación De lo contrario, después de la primera lectura, la configuración se almacenará en caché, y si el usuario cambia a la configuración, hace cambios y vuelve a cambiar, deberíamos volver a leer el valor en caché. :)

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

Si alguien me dice cómo comentar en este sitio, realmente me volvería más útil.

+0

Frustrante, esto no parece funcionar en iOS 6.0.1. Mi aplicación parece almacenar en caché el valor de configuración que se seleccionó cada vez que la aplicación se carga por primera vez. Si cambio la configuración y vuelvo a mi aplicación, no se ajusta. Si forzo a salir de mi aplicación y reinicio, el cambio se recoge. Ahora tengo un dilema: no proporcionar clics clave en mi teclado personalizado, o vivir con el error que cambia la configuración mientras se suspende mi aplicación será ignorado. ¿Cuál es peor? –

+0

Comprobé en 6.1.4, mi aplicación siempre obtiene ambos vars falsos de 'Boolean keyExistsAndHasValidFormat = false; valor bool = CFPreferencesGetAppBooleanValue ( RFCTA ("teclado"), RFCTA ("/ var/mobile/Library/Preferences/com.apple.preferences.sounds"), y keyExistsAndHasValidFormat); 'Así que mi código dejó de tocar clics hace mucho . Entonces, si los usuarios se quejan, los dirigiré directamente a Apple. Perdimos la pelea – Hrissan

17

No hay forma documentada de comprobar esto, pero es posible. No sé si esto realmente cuenta como "API privada", así que prepárese para el rechazo si usa este método.

La configuración del sonido del teclado se almacena en la preferencia com.apple.preferences.sounds compartida. Lo que podría intentar

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

(Por cierto: la llamada real para reproducir el sonido "click" en UIKit es [UIHardware _playSystemSound:1104];)

+3

La llamada CFPreferencesGetAppBooleanValue funciona a la perfección, pero UIHardware no se reconoce (ni en ningún lugar de los documentos) por mí. En cambio, agregué el framework AudioToolkit y llamé 'AudioServicesPlaySystemSound (1104)' para el mismo efecto. –

+0

@Kris: Eso es porque UIHardware es una clase privada. – kennytm

Cuestiones relacionadas