滚动 UITableView 期间未调用 audioPlayerDidFinishPlaying
Posted
技术标签:
【中文标题】滚动 UITableView 期间未调用 audioPlayerDidFinishPlaying【英文标题】:audioPlayerDidFinishPlaying not being called during scrolling UITableView 【发布时间】:2010-06-13 20:21:33 【问题描述】:我的一个观点是UITableView
,它充当AVAudioPlayer
的代表,当您选择某一行时,该表基本上会播放声音,并在播放完成后选择重复声音。
但是,我注意到,如果我为某个声音选择一个重复 ON 的单元格,然后滚动 UITableView
以选择不同的声音,它不会调用 audioPlayerDidFinishPlaying
(因此不会重复)直到滚动之后已经停止。一旦我停止滚动,它就会重复。或者,如果我根本不滚动,它会重复就好了。
在滚动过程中UITableView
不再充当代表并调用audioPlayerDidFinishPlaying
时会发生什么?有什么想法吗?
【问题讨论】:
【参考方案1】:即使文档没有明确说明,我怀疑 audioPlayerDidFinishPlaying
调用在主线程上被延迟(我的粗体句子):
AVAudioPlayer 类可让您播放 任何可用音频格式的声音 iPhone 操作系统。您使用委托来 处理中断(例如 来电)并更新 有声音时的用户界面 播放完毕。委托方法 对于 AVAudioPlayer 类是 在 AVAudioPlayerDelegate 中描述 协议参考。
只要有一些事件需要处理,比如滚动事件,调用就会在主线程上等待。
【讨论】:
以上是关于滚动 UITableView 期间未调用 audioPlayerDidFinishPlaying的主要内容,如果未能解决你的问题,请参考以下文章
在 XCUI TestCase 期间最后停止在 UITableView 上滚动