首先,你的Vc是有NavigationController來(lái)管理的,就是得有導(dǎo)航欄.
這個(gè)人性化的便捷操作從iOS7開(kāi)始.
為什么有些ViewController可以左側(cè)滑動(dòng)返回,有些頁(yè)面這個(gè)手勢(shì)就不起作用了?
手勢(shì)可用:當(dāng)前頁(yè)面的返回(pop)事件沒(méi)有被自定義,使用的是系統(tǒng)的back,interactivePopGestureRecognizer.enable =YES ,默認(rèn)是開(kāi)啟的狀態(tài),看名字也知道Ta干什么的.
手勢(shì)失效: 當(dāng)自定義了返回的圖標(biāo)樣式,文案等信息后,手勢(shì)的值就變了 → → →interactivePopGestureRecognizer.enable = NO
針對(duì)上面的(2)問(wèn)題,來(lái)看看怎么在次開(kāi)啟這個(gè)功能
這個(gè)功能,就是NavigationController中的interactivePopGestureRecognizer屬性,原理在上面已經(jīng)介紹的差不多了,只是一個(gè)屬性.
手動(dòng)開(kāi)啟要注意這個(gè)點(diǎn)
1. 如果手動(dòng)開(kāi)啟了interactivePopGestureRecognizer,在根Vc中要把Ta設(shè)置成NO,不然滑動(dòng)依舊生效,但是已經(jīng)沒(méi)有上級(jí)Vc,找不到就會(huì)導(dǎo)致程序Crash.
手動(dòng)開(kāi)啟的思路
開(kāi)啟功能:要在根VC的viewWillDisAppear方法中設(shè)置當(dāng)前的NavigationController.的interactivePopGestureRecognizer.enable =YES;
根VC的viewDidAppear等方法中設(shè)置interactivePopGestureRecognizer.enable =NO;
開(kāi)啟代碼如下:
-(void)viewWillDisappear:(BOOL)animated
{
? ?[super viewWillDisappear:animated];
? ?if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
? ? ? ?self.navigationController.interactivePopGestureRecognizer.enabled = YES;
? ?}
}
關(guān)于上文提到的注意點(diǎn)
- (void)viewDidAppear:(BOOL)animated
{
? ?[super viewDidAppear:animated];
//禁用返回手勢(shì)
? ?if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
? ? ? ?self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}