場(chǎng)景:
最常見的一個(gè)功能場(chǎng)景就是視頻自動(dòng)播放。我們滑動(dòng)停止的位置播放視頻,屏幕上其他位置則不播放視頻(停止播放)。這里就涉及到對(duì)列表滾動(dòng)事件的一個(gè)監(jiān)聽。 常見的scrollViewDidScroll
方法就不說了,下邊的兩個(gè)方法,這里詳細(xì)的整理行下,做個(gè)備忘。
方法一:
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"%d------%s", decelerate, __FUNCTION__);
}
顧名思義,當(dāng)有拽的行為的時(shí)候,會(huì)觸發(fā):
- 觸發(fā)時(shí)機(jī):手指按住屏幕滑動(dòng)scrollView,然后手指離開屏幕的時(shí)候,觸發(fā)
- decelerate:
(1)當(dāng)你滑動(dòng)scrollView,然后手指離開屏幕,只要scrollView還能自行滾動(dòng)一段時(shí)間,那么則是1。
(2)和上邊相反則是0,首先強(qiáng)調(diào)下這個(gè)情況和滑動(dòng)速度沒有關(guān)系。 當(dāng)手指按住scrollView,快速或者慢速的滑動(dòng),但是手指始終不離開屏幕,這樣的話手指滑動(dòng)多少,scrollView就會(huì)滾動(dòng)多少,完全跟手。 那么此時(shí)手指離開屏幕后scrollView是禁止的,不會(huì)再自行滾動(dòng),那么就是0。
方法二:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"%s",__FUNCTION__);
}
顧名思義,當(dāng)減速結(jié)束的時(shí)候,會(huì)觸發(fā):
- 觸發(fā)時(shí)機(jī):當(dāng)手指離開屏幕后,scrollView仍然在自行滾動(dòng),停止后,會(huì)觸發(fā)這個(gè)方法。
特殊場(chǎng)景:
有一個(gè)場(chǎng)景, 當(dāng)你快速滑動(dòng)scrollView, 然后手指離開屏幕, 此時(shí)decelerate = 1
。 然后在scrollView還在滑動(dòng)的過程中時(shí)手指按住scrollView讓其停止,scrollView表現(xiàn)是立即停止?jié)L動(dòng),此時(shí)手指離開屏幕, 會(huì)再次回調(diào)decelerate = 0
,同時(shí)回調(diào)scrollViewDidEndDecelerating
。
所以我們一般這么寫:
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate) {
NSLog(@"這個(gè)方法加decelerate判斷,只是處理scrollView跟著手指滑動(dòng)而滑動(dòng),手指離開屏幕就停止的情況");
}
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"這個(gè)方法用來處理用戶手指離開屏幕,scrollView仍然滾動(dòng),然后停止的情況");
}
對(duì)于視頻自動(dòng)播放,以上兩個(gè)方法在調(diào)用視頻播放方法的時(shí)候,視頻播放方法內(nèi)部都要進(jìn)行容錯(cuò)處理:如果視頻正在播放,那么就不要重新走播放流程了。
交流
希望能和大家交流技術(shù)
Blog:http://www.lilongcnc.cc