Ho avuto problemi con un problema audio UIPickerView e anche se è solo parzialmente pertinente alla domanda originale, sto postando il problema/la soluzione qui perché questo argomento continua a venire nei miei risultati di ricerca quindi penso che nessuno altrimenti nella stessa barca potrebbe finire anche qui ...
Avevo bisogno di inizializzare un UIPickerView per ripristinare la riga correntemente selezionata dai dati salvati. Semplice, vero? In viewDidLoad, basta chiamare il selectRow: inComponent: Metodo animato di UIPickerView:
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
Questo funziona come previsto, ma ha un effetto collaterale che genera un singolo "clic" come se l'utente avesse fatto scorrere il controllo. Il suono del clic si verifica solo quando è in esecuzione su un dispositivo (non sul simulatore) e solo se sul dispositivo è installato iOS 3.x (ho provato con 3.1.3 e 3.2). Questo è apparentemente un bug in iOS che è stato risolto a partire da iOS 4.0. Ma se hai bisogno di indirizzare l'iPhone Gen1, sei bloccato con iOS 3.1.3 dove questo problema è presente.
Ho discusso il problema con Apple DTS, ma non sono stati in grado di suggerire soluzioni alternative oltre all'aggiornamento alla 4.0. Ho chiesto se avrebbero fatto un'eccezione e permesso l'uso del setSoundsEnabled non documentato di cui sopra (che in realtà risolve il problema). La risposta è stata: "Non ci sono eccezioni".
Dopo alcuni lavori di investigazione aggiuntivi, ho scoperto che è possibile impedire che il suono si verifichi rimuovendo temporaneamente UIPickerView dalla superview, chiama selectRow, quindi aggiungilo nuovamente al superview.Per esempio, in viewDidLoad:
UIView *superview = [myPicker superview];
[myPicker removeFromSuperview];
[myPicker reloadAllComponents];
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
[superview addSubview:myPicker];
Questo elimina il suono click estranei senza utilizzare le API non documentate/privato in modo dovrebbe passare processo di approvazione di Apple.
che funziona perfettamente! grazie mille!! A proposito, sai qual è la particolare Apple con la mancata API non documentata? Questo ha bisogno di raggiungere presto l'App Store. Non vorrei essere respinto e abbattuto a causa di una cosa così piccola :) – infiniteloop
"A proposito, sai quanto particolare è Apple con la mancata API non documentata?" Non so davvero la risposta a questa domanda, prova a cercarla su SO e se non è già stata chiesta, chiediglielo. – hhafez
Attualmente avvisano se si utilizza questo metodo. –