1. 程式人生 > >自定義的導航欄如何增加右滑動返回的手勢

自定義的導航欄如何增加右滑動返回的手勢

這幾天產品增加了個新需求,要求增加滑動返回的手勢。安卓上有返回按鈕,但是iOS上沒有返回按鈕,增加一個返回的手勢可以較大的提高使用者體驗。iOS7剛出來的時候系統增加了滑動返回手勢,感覺特別好,但是發現把導航欄隱藏,自定義的滑動返回手勢不好使。於是按照這個帖子(http://www.gowhich.com/blog/view/id/383)寫的如何開啟系統的滑動返回,並且如何避免出現的問題,結果發現不好使,在一級介面滑動,依然會出現畫面卡住的問題。

垃圾方案一:

後來找各種第三方,https://github.com/Coneboy-k/KKNavigationController,這個導航欄原理是截了張圖,放到記憶體裡,剛開始覺得挺好,後來出現了一些問題,如卡頓。而且頁面如果過多的話,記憶體肯定會增加不少。對於我這個完美主義者是不能接受的。

垃圾方案二:

下面完美的解決方案來了大笑,不超過10行程式碼,以上所有問題全部解決。

直接在一級介面的viewWillAppear裡註冊delegate:

    self.navigationController.interactivePopGestureRecognizer.delegate = self;

然後在一級介面的viewWillDisAppear裡登出delegate(此句一定要寫,否則會出其他bug):

    self.navigationController.interactivePopGestureRecognizer.delegate = nil;


然後在該介面實現代理方法:
#pragma mark - UIGestureRecognizer Delegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    //判斷是否是一級檢視,若是則關閉滑動返回手勢
    if (self.navigationController.viewControllers.count == 1)    {
        return NO;
    }
    else
    {
        return YES;
    }
}

然後萬事具備了。沒有出現上面帖子中的任何問題。

參考:

其他參考:

QQ群:172158202,入群請註明求滑動返回的demo。

相關推薦

iOS-定義導航後側滑返回功能失效

2016-03-17 iOS開發 文/煜寒了(簡書作者) 原文連結:http://www.jianshu.com/p/349636eb3fca iPhone有一個回退按鈕在所有的導航條上.這是一個簡單的沒有文字箭頭. 在一開始寫專案的時候,就要做好一個準備,導航欄是自定義還

iOS定義導航,側滑返回卡死情況的解決辦法

側滑返回是iOS7新增的一個特性,如果自定義了導航欄,那麼側滑返回這個功能就會失效。雖然在自定義導航欄的viewDidLoad方法中新增self.interactivePopGestureRecognizer.delegate = (id)self;一行程式碼就

定義導航如何增加滑動返回手勢

這幾天產品增加了個新需求,要求增加滑動返回的手勢。安卓上有返回按鈕,但是iOS上沒有返回按鈕,增加一個返回的手勢可以較大的提高使用者體驗。iOS7剛出來的時候系統增加了滑動返回手勢,感覺特別好,但是發現把導航欄隱藏,自定義的滑動返回手勢不好使。於是按照這個帖子(http:/

iOS開發之定義導航返回按鈕返回手勢失效的解決---親測是有效的。

問題一:怎麼自定義leftItem問題二:為什麼系統自帶的右滑返回手勢失效問題三:怎麼解決這個失效問題3.怎麼解決這個失效問題 其實很簡單很簡單~只需要新增下面這一句程式碼即可self.navigationController.interactivePopGestureRe

iOS開發之定義導航返回按鈕返回手勢失效的解決

我相信針對每一個iOS開發者來說~除了根檢視控制器外~所有的介面通過導航欄push過去的介面都是可以通過右滑來返回上一個介面~其實~在很多應用和APP中~使用者已經習慣了這個功能~然而~作為開發者的我們~也並沒有為此做些什麼~因為我們在建立專案時~蘋果公司已經為我們都做好了~那麼~我們這期就來聊一聊這系統

iOS 定義導航pop返回手勢,全屏返回

- (void)viewDidLoad {     [superviewDidLoad]; //重新給interactivePopGestureRecognizer.delegate掛代理

微信小程式定義導航 navigation bar 返回鍵 首頁

微信小程式自定義導航欄(wx_custom_navigation_bar) 自定義返回鍵、首頁鍵,動態設定標題,響應式元件 版本號:1.0.0 作者:chen-yt github: https://github.com/chen-yt/wx_custom_navigation

定義導航返回

UIImage *backButtonHomeImage = [[UIImage imageNamed:@"nav_back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];

Swift定義導航返回按鈕

如何去除swift系統自帶的導航欄返回按鈕?可以自定義返回按鈕 在swift中,怎麼替換系統自帶的導航欄返回按鈕?比如說我要替換成一張返回按鈕圖片,點選返回到上一頁 首先,看一下系統自帶的導航欄返回按鈕的樣式 從上面我們可以看到,導航欄返回處左邊是

Swift- 定義導航背景、標題和返回按鈕屬性

廢話少說,直接 看程式碼: //navigationBar的預設背景顏色 // UINavigationBar.appearance().tintColor = UIColor

IOS 開發筆記——定義導航返回鍵後如何恢復系統預設返回手勢

       在開發當中,我們不得不要將導航欄的左邊返回按鈕自定義成不同的樣式,但是一當我們自定義樣式後,系統預設的 pop 手勢就失效了,那麼我們該如何做呢?其實這個問題網上也有很多答案,但是每一個答案都非常坑,我都不得不吐槽一下了,老是將問題複雜化,不懂裝懂,最討厭這些

定義導航返回按鈕點選事件

開發中經常會遇到 點選導航欄返回按鈕時不想 pop 回上一級控制器,而是回到 某一級控制器 或者需要在pop回去的時候回傳一些資料,但檢視文件發現,系統並沒有給我們直接提供這樣的方法。 那麼我們先來分析如何獲取返回按鈕的點選事件。 返回按鈕在導航欄上,所以我

微信小程式開發筆記2——定義導航元件

本文主要是熟悉微信小程式自定義元件的開發,以一個常見的導航欄(Tabbar)需求為例。 官方文件:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 首先我們先看一

小程式定義導航

將app.json裡的navigationStyle設定為navigationStyle:custom。可以在.wxss裡通過margin和padding來自定義導航欄。 例如在.wxml裡寫 <view class="nav">我是汽車維修技師</view>

CSS實現定義導航帶二級選單

程式碼如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> &

IOS初學-定義導航中的內容

對導航欄中進行簡單的自定義操作 新建一個FourSubViewController檢視控制器 self.title="FourPage"         self.view.backgroundColor=UIColor.brown &nb

【小程式】定義導航

這個需求要不是UI和我講有其他小程式實現了,我都還以為小程式還不能做到自定義導航。還好是在設計階段給出的需求,不然。。。 先看看效果吧 微信小程式自定義導航欄 開始接介紹用法: 1:配置app.json 掃碼都別管,先檢視文件window配置 然後在ap

ReactNative 定義標題 ReactNative 定義導航

/** * Created by 李卓原 on 2018/7/6. * email: [email protected] * */ import React from 'react'; import { Text, S

定義導航按鈕UIBarButtonItem 文字或圖片

在4.0裡定義導航條按鈕通常是生成普通按鈕,再用它生成導航條專用按鈕。 [java] view plaincopyprint? UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]

45.定義導航 UINavigationBar

1.改變導航欄風格 可以通過程式碼修改也可以通過 plist修改 @property(nonatomic,assign) UIBarStyle barStyle __TVOS_PROHIBITED; typedef NS_ENUM(NSInte