有時候希望在頁面退出之前做一些事情,但是發(fā)現(xiàn)除了 popViewController 方法外,有時候會使用側(cè)滑返回。這個時候就需要捕捉側(cè)滑返回的事件了。
創(chuàng)新互聯(lián)服務(wù)項目包括綿竹網(wǎng)站建設(shè)、綿竹網(wǎng)站制作、綿竹網(wǎng)頁制作以及綿竹網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,綿竹網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到綿竹省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
//蘋果的api說明 與側(cè)滑返回相關(guān)
在當(dāng)前控制器中重寫這兩個方法就可以了。
1.第一次push進來的時候兩個方法都會調(diào)用, parent的值不為空 。
2.當(dāng)開始使用系統(tǒng)側(cè)滑的時候,會先調(diào)用willMove, 而parent的值為空 ;
3.當(dāng)滑動結(jié)束后返回了上個頁面,則會調(diào)用didMove, parent的值也為空 ,如果滑動結(jié)束沒有返回上個頁面,也就是輕輕劃了一下還在當(dāng)前頁面,那么則不會調(diào)用didMove方法。
想要在側(cè)滑返回后在上個頁面做一些操作的話,可以在didMove方法中根據(jù)parent的值來判斷。
有個小需求是:從當(dāng)前控制器側(cè)滑返回時,要返回到指定控制器(如果沒有指定要返回的控制器,就返回到根控制器),而不是上一個界面,如下做法是把指定控制器到當(dāng)前控制器中間的控制器全部移除,然后在當(dāng)前控制器觸發(fā)返回時,都能回到指定控制器。以下方法在當(dāng)前控制器直接調(diào)用一下,再傳入要返回到的控制器即可,比如在viewDidLoad中,然后當(dāng)觸發(fā)系統(tǒng)的pop方法時就能回到該指定控制器。
//開啟側(cè)滑
1.第一次push進來的時候兩個方法都會調(diào)用,parent的值不為空。
2.當(dāng)開始使用系統(tǒng)側(cè)滑的時候,會先調(diào)用willMove,而parent的值為空;
3.當(dāng)滑動結(jié)束后返回了上個頁面,則會調(diào)用didMove,parent的值也為空,如果滑動結(jié)束沒有返回上個頁面,也就是輕輕劃了一下還在當(dāng)前頁面,那么則不會調(diào)用didMove方法。
當(dāng)然,直接點擊返回按鈕,這兩個方法也會調(diào)用??梢耘袛鄍arent的值是否為空,進行具體的操作。
//開啟側(cè)滑
//關(guān)閉側(cè)滑
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:YES];
}
非webview頁面,使用第三方框架FDFullscreenPopGesture
鏈接戳這里: FDFullscreenPopGesture
webview頁面(此處以WKWebview為例,self指代WKWebView所在的viewController)
1.禁用FDFullscreenPopGesture的側(cè)滑返回手勢
2.添加自定義手勢
3.實現(xiàn)代理方法
介紹和屬性中我們可以知道 interactivePopGestureRecognizer 是負責(zé)把Navigation 棧中最上面的View Controller推出去。而且它只能在iOS7.0及以上可以使用,并且禁止在TVOS中使用!
Like this:
像這樣:
或者:
這里你也許會疑惑為什么我們上面用的是 UIScreenEdgePanGestureRecognizer 而不是 interactivePopGestureRecognizer ?
我們先打印 self.navigationController.interactivePopGestureRecognizer 結(jié)果為:
打印結(jié)果中我們看到了 UIScreenEdgePanGestureRecognizer :說明 interactivePopGestureRecognizer 其實由 UIScreenEdgePanGestureRecognizer 控制并執(zhí)行 handleNavigationTransition: 其代理對象為 _UINavigationInteractiveTransition ,所以判斷中我們使用了 UIScreenEdgePanGestureRecognizer .
我們可以根據(jù) UIScreenEdgePanGestureRecognizer , handleNavigationTransition: 來自定義我們自己的側(cè)滑返回,這章先講訴到這里!
GitHub
今天教師節(jié),祝天下所有教師:節(jié)日快樂!