语音消息连续播放分两步实现:
1、开始播放时获取下条消息的位置;
2、结束播放后开始播放下条消息。
刚开始做的时候我的思路是获取到下条消息的位置后就播放下条消息,上边这两步是大牛给的思路。。。
因为我们做的即时通信项目已经基本完成,这个语音消息连续播放的功能是刚加的(我们是要超越微信的,哈哈),开始做的时候百度了下看是否有大牛分享经验,看这里。
但是看完以后也很懵逼,我们并不能做里边的存储,所以就冥思苦想,最后只能做到点完第一条消息后,其他消息没有反应,重新进入会话界面后发现后边的消息已经变成了已读状态(之前已经加了语音消息未读显示小红点的功能)。后来大牛给了上边的思路,于是我就开始思考怎么定位下条消息,之前是使用indexPath来获取下一行cell,但是发现在自定义cell类里打印的self,坐标y是1000多,自己获取的下一行cell坐标y是0,高度也跟自定义里的不一样,这就是问题所在。突然想起来百度到的大牛的经验,于是就看了大牛的代码,主要就是获取cell这块儿:
大牛的代码获取到cell之后然后在上条消息播放完以后再播放下条消息,运行后果然成功了。
当然除了步骤,还有一些判断就是下条消息是非语音类型的,和是接收的还是自己发送的,当然只要搞好了上边的步骤,这些问题也不是问题了。
网友评论