2010-04-24 6 views

risposta

4

Se si vuole fare la soluzione perfetta, è necessario aggiungere il seguente lcode al vostro app. Altrimenti dopo la prima lettura, l'impostazione viene memorizzata nella cache e se l'utente passa alle impostazioni, apporta modifiche e ripristina, dovremmo rileggere il valore memorizzato nella cache. :)

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

Se qualcuno mi dice come commentare questo sito, mi piacerebbe davvero diventare più utile.

+0

Frustrante, questo non sembra funzionare su iOS 6.0.1. La mia app sembra memorizzare nella cache il valore di impostazione che è stato selezionato ogni volta che viene caricata l'app. Se cambio l'impostazione e torno alla mia app, non si regola. Se esco dall'app e riavvio, il cambiamento viene rilevato. Ora ho un dilemma: non fornire affatto clic chiave nella mia tastiera personalizzata o vivere con il bug che le impostazioni cambiano mentre la mia app è sospesa. Che è peggio? –

+0

Ho controllato su 6.1.4, la mia app ottiene sempre entrambi vars false da 'Boolean keyExistsAndHasValidFormat = false; valore bool = CFPreferencesGetAppBooleanValue ( CFSTR ("tastiera"), CFSTR ("/ var/mobile/Library/Preferences/com.apple.preferences.sounds"), & keyExistsAndHasValidFormat); 'Quindi il mio codice smesso di giocare molto tempo fa clic . Così sia, se gli utenti si lamentano, li indirizzerò direttamente ad Apple. Abbiamo perso il combattimento. – Hrissan

17

Non c'è un modo documentato per controllare questo, ma è possibile. Non so se questo conta davvero come "API privata", quindi preparatevi al rifiuto se utilizzate questo metodo.

Le impostazioni del suono di clic della tastiera sono memorizzate nella preferenza condivisa com.apple.preferences.sounds. Così si potrebbe provare

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

(BTW: la chiamata effettiva per riprodurre il suono "click" in UIKit è [UIHardware _playSystemSound:1104];)

+3

La chiamata CFPreferencesGetAppBooleanValue funziona perfettamente, ma UIHardware non è riconosciuto (o ovunque nei documenti) per me. Invece, ho aggiunto il framework AudioToolkit e chiamato 'AudioServicesPlaySystemSound (1104)' per lo stesso effetto. –

+0

@Kris: Questo perché UIHardware è una classe privata. – kennytm

Problemi correlati