Navigation( 基類 ) 后的側(cè)滑 自定義操作(解決側(cè)滑卡死問(wèn)題)

作用
1、我們可以自定義側(cè)滑的操作
2、可以解決在RootViewController時(shí)側(cè)滑引發(fā)的卡死問(wèn)題
3、self.interactivePopGestureRecognizer.enabled = NO; ( 激活 )

(寫在NavigationViewController的基類中)

首先我們讓我們的控制器的Pop手勢(shì)的代理設(shè)置為當(dāng)前控制器

設(shè)置代理 UIGestureRecognizerDelegate


__weak typeof(self) weakSelf = self;

self.interactivePopGestureRecognizer.delegate = weakSelf;

然后我們?nèi)?shí)現(xiàn)他的代理方法


#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{
    //判斷是否為rootViewController
    if (self&& self.navigationController.viewControllers.count == 1) {
         // 例如  [self dismissViewController:NO animation:nil];
        return NO;
    }
    return YES;
}

重寫 pushViewController 方法 來(lái)統(tǒng)一返回按鈕


/*!
 *  @author Jing, 16-09-07 15:09:47
 *
 *  @brief 重寫返回按鈕
 */
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [super pushViewController:viewController animated:animated];
    if (viewController.navigationItem.leftBarButtonItem ==nil && self.viewControllers.count >1) {

// 自定義一個(gè)  BarButtonItem  的按鈕
        viewController.navigationItem.leftBarButtonItem = [self creatBackButton];
    }
}

在 chirldController 中設(shè)置了當(dāng)前控制器為代理  的話

在 willap 設(shè)置代理

在 willdisap 設(shè)置self.navigationcontroller 為 delegate

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容