在滚动UITableView期间没有调用audioPlayerDidFinishPlaying

时间:2010-06-13 20:21:34

标签: iphone cocoa-touch uitableview scroll avaudioplayer

我的一个观点是UITableView,它充当AVAudioPlayer的委托,当您选择某个行并选择在完成播放后重复声音时,此表基本上会播放声音。

但是,我注意到如果我为某个声音选择一个重复播放的单元格然后滚动UITableView以选择不同的声音,它将不会调用audioPlayerDidFinishPlaying(因此不会重复)直到滚动停止后。一旦我停止滚动,它就会很好地重复。或者,如果我根本不滚动,它会重复正常。

在滚动期间UITableView不再充当代理人并调用audioPlayerDidFinishPlaying时会发生什么?有什么想法吗?

1 个答案:

答案 0 :(得分:2)

即使文档没有明确说明,我怀疑audioPlayerDidFinishPlaying调用是在主线程上推迟的(我的粗体句子):

  

AVAudioPlayer类让你玩   任何音频格式的声音   iPhone OS。你使用委托   处理中断(例如   来电)和更新   声音有的用户界面   玩完了。委托方法   对于AVAudioPlayer类来说   在AVAudioPlayerDelegate中描述   协议参考。

只要有一些要处理的事件,比如滚动事件,就会在主线程上等待调用。