He estado luchando con un problema de sonido UIPickerView, y aunque es solo parcialmente relevante para la pregunta original, estoy publicando el problema/solución aquí porque este tema sigue apareciendo en mis resultados de búsqueda, así que creo que cualquier persona más en el mismo barco puede terminar aquí también ...
Necesitaba inicializar un UIPickerView para restaurar la fila seleccionada actualmente de los datos guardados. Simple, ¿verdad? En viewDidLoad, simplemente llame a la selectRow: inComponent: Método animada de UIPickerView:
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
Esto funciona como se esperaba, pero tiene un efecto secundario que genera un sonido "clic", como si el usuario hubiera desplazado el control. El sonido de clic solo se produce cuando se ejecuta en un dispositivo (no en el simulador) y solo si el dispositivo tiene iOS 3.x instalado (probé con 3.1.3 y 3.2). Esto fue aparentemente un error en iOS que se solucionó comenzando con iOS 4.0. Pero si necesita apuntar al iPhone Gen1, tiene problemas con iOS 3.1.3 donde este problema está presente.
Discutí el problema con Apple DTS, pero no pudieron sugerir ninguna solución alternativa a la actualización a 4.0. Pregunté si harían una excepción y permitirían el uso del setSoundsEnabled indocumentado mencionado anteriormente (que realmente resuelve el problema). La respuesta fue: "No hay excepciones".
Después de un trabajo de detección adicional, descubrí que puede evitar que el sonido se produzca al quitar temporalmente el UIPickerView de la supervista, llamar a SelectRow, luego volver a agregarlo a la supervista.Por ejemplo, en viewDidLoad:
UIView *superview = [myPicker superview];
[myPicker removeFromSuperview];
[myPicker reloadAllComponents];
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
[superview addSubview:myPicker];
Esto se deshace del sonido de clic ajeno sin el uso de las API de indocumentados/privada por lo que debe pasar el proceso de aprobación de Apple.
que funciona a la perfección! ¡¡Muchas gracias!! Por cierto, ¿sabes cuán particular es Apple al rechazar la API no documentada? Esto debe llegar a la tienda de aplicaciones pronto. No querría ser rechazado y abatido por algo tan pequeño :) – infiniteloop
"Por cierto, ¿sabes cuán particular es Apple al rechazar la API no documentada?" Realmente no sé la respuesta a esa pregunta, intente buscarla en SO y, si aún no la ha preguntado, hágala. – hhafez
Actualmente, te avisan si usas este método. –