2010-06-13 7 views
1

L'un de mes affichages est un UITableView qui agit en tant que délégué pour un AVAudioPlayer et ce tableau joue essentiellement des sons lorsque vous sélectionnez une certaine ligne avec des options pour répéter le son après la fin de la lecture. Cependant, j'ai remarqué que si je sélectionne une cellule avec répétition ON pour un certain son et que je fais défiler UITableView pour sélectionner un son différent, il n'appellera pas audioPlayerDidFinishPlaying (et donc ne se répètera pas) tant que le défilement ne sera pas arrêté. Dès que j'arrête de défiler, il se répète très bien. Ou si je ne défile pas du tout, cela se répète très bien.audioPlayerDidFinishPlaying pas appelé pendant le défilement UITableView

Que se passe-t-il pendant le défilement que le UITableView n'agit plus en tant que délégué et appelle audioPlayerDidFinishPlaying? Des pensées?

Répondre

2

Même si la documentation n'a pas dit clairement, je pense que le audioPlayerDidFinishPlaying appel est reporté sur le thread principal (phrase gras par moi):

La classe AVAudioPlayer vous permet de jouer son dans une audio format disponible en iPhone OS. Vous utilisez un délégué à gérer les interruptions (comme un appel entrant) et mettre à jour l'interface utilisateur lorsqu'un son a fini de jouer. Les méthodes de délégué pour la classe AVAudioPlayer sont décrites dans AVAudioPlayerDelegate Protocole de référence.

Tant qu'il y a des événements à traiter, comme des événements de défilement, l'appel est en attente sur le thread principal.

+0

Bonne prise, merci Laurent! – iwasrobbed

Questions connexes