場景:
最常見的一個(gè)功能場景就是視頻自動(dòng)播放婴渡。我們滑動(dòng)停止的位置播放視頻,屏幕上其他位置則不播放視頻(停止播放)遵绰。這里就涉及到對列表滾動(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è)方法。
特殊場景:
有一個(gè)場景, 當(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)洞难,然后停止的情況");
}
對于視頻自動(dòng)播放舆吮,以上兩個(gè)方法在調(diào)用視頻播放方法的時(shí)候,視頻播放方法內(nèi)部都要進(jìn)行容錯(cuò)處理:如果視頻正在播放队贱,那么就不要重新走播放流程了。
交流
希望能和大家交流技術(shù)
Blog:http://www.lilongcnc.cc