語音消息連續(xù)播放分兩步實(shí)現(xiàn):
1、開始播放時(shí)獲取下條消息的位置;
2、結(jié)束播放后開始播放下條消息。
剛開始做的時(shí)候我的思路是獲取到下條消息的位置后就播放下條消息,上邊這兩步是大牛給的思路。。。
因?yàn)槲覀冏龅募磿r(shí)通信項(xiàng)目已經(jīng)基本完成,這個(gè)語音消息連續(xù)播放的功能是剛加的(我們是要超越微信的,哈哈),開始做的時(shí)候百度了下看是否有大牛分享經(jīng)驗(yàn),看這里。
但是看完以后也很懵逼,我們并不能做里邊的存儲(chǔ),所以就冥思苦想,最后只能做到點(diǎn)完第一條消息后,其他消息沒有反應(yīng),重新進(jìn)入會(huì)話界面后發(fā)現(xiàn)后邊的消息已經(jīng)變成了已讀狀態(tài)(之前已經(jīng)加了語音消息未讀顯示小紅點(diǎn)的功能)。后來大牛給了上邊的思路,于是我就開始思考怎么定位下條消息,之前是使用indexPath來獲取下一行cell,但是發(fā)現(xiàn)在自定義cell類里打印的self,坐標(biāo)y是1000多,自己獲取的下一行cell坐標(biāo)y是0,高度也跟自定義里的不一樣,這就是問題所在。突然想起來百度到的大牛的經(jīng)驗(yàn),于是就看了大牛的代碼,主要就是獲取cell這塊兒:

大牛的代碼
獲取到cell之后然后在上條消息播放完以后再播放下條消息,運(yùn)行后果然成功了。
當(dāng)然除了步驟,還有一些判斷就是下條消息是非語音類型的,和是接收的還是自己發(fā)送的,當(dāng)然只要搞好了上邊的步驟,這些問題也不是問題了。