|
之前隨手寫過一篇《使用UIScreenEdgePanGestureRecognizer實(shí)現(xiàn)swipe to pop效果》,挺粗糙的。 現(xiàn)在使用默認(rèn)模板創(chuàng)建的iOS App都支持手勢(shì)返回功能,如果導(dǎo)航欄的返回按鈕是自定義的那么則會(huì)失效,也可以參考這里手動(dòng)設(shè)置無效。
如果是因?yàn)樽远x導(dǎo)航按鈕而導(dǎo)致手勢(shì)返回失效,那么可以在NavigationController的viewDidLoad函數(shù)中添加如下代碼:
這樣寫了以后就可以通過手勢(shì)滑動(dòng)返回上一層了,但是如果在push過程中觸發(fā)手勢(shì)滑動(dòng)返回,會(huì)導(dǎo)致導(dǎo)航欄崩潰(從日志中可以看出)。針對(duì)這個(gè)問題,我們需要在pop過程禁用手勢(shì)滑動(dòng)返回功能:
除了使用系統(tǒng)默認(rèn)的動(dòng)畫,還可以使用自定義過渡動(dòng)畫(豐滿的文檔):
如下這個(gè)代理方法是用來提供一個(gè)非交互式的過渡動(dòng)畫的:
而下面這個(gè)代理方法則是提供交互式動(dòng)畫:
這兩個(gè)組合起來使用。首先,我們需要有個(gè)動(dòng)畫:
其次,交互式動(dòng)畫是通過
同樣地,自定義的動(dòng)畫也會(huì)有上面提到的導(dǎo)航欄崩潰問題,也可以通過類似的方法來解決:
補(bǔ)充:位于當(dāng)前navgationController的第一個(gè)([0])viewController時(shí)需要設(shè)置手勢(shì)代理,不響應(yīng)。
|
|
|