Je suis aux prises avec un problème de son UIPickerView, et même si ce n'est que partiellement pertinent à la question initiale, je publie le problème/solution ici parce que ce sujet revient dans mes résultats de recherche. d'autre part dans le même bateau peut finir ici aussi ...
J'avais besoin d'initialiser un UIPickerView pour restaurer la ligne actuellement sélectionnée à partir des données enregistrées. Simple, non? Dans viewDidLoad, il suffit d'appeler la selectRow: inComponent: méthode d'animation de UIPickerView:
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
Cela fonctionne comme prévu, mais a un effet secondaire qu'il génère un « clic » comme si l'utilisateur avait fait défiler le contrôle. Le son du clic ne se produit que lors de l'exécution sur un périphérique (pas le simulateur), et seulement si le périphérique iOS 3.x est installé (j'ai testé avec 3.1.3 et 3.2). C'était apparemment un bug dans iOS qui a été corrigé à partir d'iOS 4.0. Mais si vous avez besoin de cibler l'iPhone Gen1, vous êtes coincé avec iOS 3.1.3 où ce problème est présent. J'ai discuté du problème avec Apple DTS, mais ils ont été incapables de suggérer une solution de contournement autre que la mise à niveau vers 4.0. J'ai demandé s'ils feraient une exception et autoriseraient l'utilisation du setSoundsEnabled non documenté mentionné ci-dessus (qui résout réellement le problème). La réponse était: "Il n'y a pas d'exceptions". Après un travail de détective supplémentaire, j'ai découvert que vous pouviez empêcher le son de se produire en supprimant temporairement UIPickerView de la vue d'ensemble, en appelant selectRow, puis en l'ajoutant de nouveau à la vue d'ensemble.Par exemple, dans viewDidLoad:
UIView *superview = [myPicker superview];
[myPicker removeFromSuperview];
[myPicker reloadAllComponents];
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
[superview addSubview:myPicker];
Cela se débarrasse du son de clic étranger sans utiliser API non documentées/privé devrait donc passer le processus d'approbation d'Apple.
qui fonctionne parfaitement! Merci beaucoup!! Au fait, savez-vous à quel point Apple est incapable d'ignorer les API non documentées? Cela doit bientôt arriver dans l'App Store. Je ne veux pas être rejeté et découragé à cause d'une chose si petite :) – infiniteloop
"Au fait, savez-vous à quel point Apple est avec l'API non documentée?" Je ne connais vraiment pas la réponse à cette question, essayez de la rechercher sur SO et si cela n'a pas déjà été demandé, demandez-le. – hhafez
Ils vous préviennent actuellement si vous utilisez cette méthode. –