UIPageViewController 禁止翻頁

? ? ? ?UIPageViewController我感覺就是相當(dāng)于一個(gè)控制器,來控制一組viewControllers的轉(zhuǎn)換和現(xiàn)實(shí),在這里就不多說他的實(shí)現(xiàn)機(jī)制了。

? ? ? 首先的第一步,就是來實(shí)現(xiàn)它的數(shù)據(jù)源和代理方法,來做到基本的展示,然后再來考慮翻頁的問題,(UIPageViewControllerDataSource , UIPageViewControllerDelegate)兩個(gè)代理的實(shí)現(xiàn)過后,你會(huì)在這里看到這兩個(gè)數(shù)據(jù)源方法

- ( UIViewController*)pageViewController:(UIPageViewController*)pageViewController viewControllerBeforeViewController:(UIViewController*)viewController;

- (UIViewController*)pageViewController:(UIPageViewController*)pageViewController viewControllerAfterViewController:(UIViewController*)viewController;

很明顯就是用來控制翻頁的數(shù)據(jù)源處理,我也考慮過在這里進(jìn)行禁止的寫法,但是如果我還有一個(gè)collectionView視圖來控制翻頁的滾動(dòng),相當(dāng)于兩個(gè)視圖之間的聯(lián)動(dòng)效果,那么我就需要加入判斷,來控制顯示的邏輯,這樣做的話,拓展性就很差。而且寫代碼盡量是簡潔,所以在數(shù)據(jù)源方法里加入一些多余的邏輯,我覺得會(huì)影響代碼的美觀程度。這樣做,很不合適,耦合性也會(huì)很高,不夠簡單,也不通用。在網(wǎng)上也找了一些方法都是用過,手勢(shì)來解決的,我覺得監(jiān)聽手勢(shì)的方式先不說好不好用,首先就會(huì)覺得麻煩,容錯(cuò)率太低。這讓我懷念起scrollView視圖的scrollEnable的方法,真是又簡單,又方便。但是UIPageViewController并沒有暴漏出這個(gè)屬性出來,只要找到了這個(gè)屬性,那么就好解決了。不說廢話了,先上關(guān)鍵代碼。。。。。

滾動(dòng)視圖UIQueuingScrollView??

- (UIScrollView *)findScrollView{

? ? ? ? ? ? ? ?UIScrollView*scrollView; ?

? ? ? ? ? ? ? ?for(id subview in self.view.subviews){

? ? ? ? ? ? ? ? ? ? ? ? ? ? if([subview isKindOfClass:UIScrollView.class]){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?scrollView=subview;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break;

? ? ? ? ? ? ? ? ? ?}}

? ? ? ? ? ? ? return ?scrollView;

}

就是這一小段代碼來解決scrollView的獲取,想繼續(xù)深入的小伙伴可以查一下UIQueuingScrollView。 這個(gè)scrollView就是UIPageViewController用來做滾動(dòng)效果的視圖,你要想控制一些滾動(dòng)效果,就可以修改這個(gè)scrollView的屬性。所以我通過設(shè)置UIQueuingScrollView.scrollEnable = NO;就解決了翻頁的問題,而且絕對(duì)通用。

如果你有多個(gè)滾動(dòng)視圖,那么也很好辦,就是UIQueuingScrollView.delegate = self; 在UIScrollViewDelegate當(dāng)中的 scrollDIdScroll 方法做一些處理,反正,只要獲得了這個(gè)scrollView我就可以做很多事情~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容