iOS自定義導(dǎo)航欄返回按鈕出現(xiàn)的奇怪問題

今天測(cè)試提了一個(gè)問題:在TabBarViewControllercurrentViewController 頁面屏幕左側(cè)邊緣向右滑一下(就是那種push到新頁面后側(cè)滑返回手勢(shì)),點(diǎn)擊當(dāng)前頁面的按鈕或者其他View想要跳轉(zhuǎn)到下一個(gè)ViewController ,發(fā)現(xiàn)跳轉(zhuǎn)失敗(實(shí)際不是跳轉(zhuǎn)失敗,而是新頁面出現(xiàn)在了當(dāng)前頁面的下面,當(dāng)前頁面把新頁面遮住了),我的項(xiàng)目類似于微信那樣,有5個(gè)TabBarItem,對(duì)應(yīng)有5個(gè)頁面,在每個(gè)頁面未跳轉(zhuǎn)新頁面前做這種側(cè)滑手勢(shì)都會(huì)出現(xiàn)這種問題。
我這個(gè)項(xiàng)目由于要自定義導(dǎo)航欄返回按鈕,所以我看到這個(gè)問題首先想到的是跟自定義返回按鈕有關(guān),眾所周知,自定義返回按鈕后側(cè)滑手勢(shì)就會(huì)失效,需要重寫代理self.interactivePopGestureRecognizer?.delegate = self,重寫代理后沒有重寫代理里面的方法,于是把這里面的方法好好看了一下(可參考網(wǎng)上文章),把問題鎖定在 gestureRecognizerShouldBegin這個(gè)代理方法的實(shí)現(xiàn)上,在首頁的時(shí)候,需要忽略手勢(shì),只有在push 到新的ViewController 后才需要識(shí)別手勢(shì):

extension BaseNavigationController {
    //重寫代理方法
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        if (children.count <= 1) {
            return false
        }
        return true
    }
}

然后問題解決。

?著作權(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)容