解決自定義了導(dǎo)航條的返回按鈕后,系統(tǒng)自帶的滑動返回手勢的失效問題.

背景介紹 : 在開發(fā)過程中,系統(tǒng)自帶的某些功能,可能不滿足我們的開發(fā)需求,所以常常需要我們自定義.當我們自定義導(dǎo)航條上的返回按鈕之后,會發(fā)現(xiàn)系統(tǒng)自帶的滑動返回手勢處于失效狀態(tài),這是本章主要想解決的問題.

思路 : 既然自定義了導(dǎo)航條上的返回按鈕,手勢失效,說明系統(tǒng)內(nèi)部是遵守了手勢代理的,我們只需要打印出系統(tǒng)自帶的手勢就可以設(shè)置了.

    // 打印系統(tǒng)自帶的手勢
   NSLog(@"%@",self.interactivePopGestureRecognizer);
// 打印結(jié)果
 <UIScreenEdgePanGestureRecognizer: 0x7fb18a627ce0;
 state = Possible; delaysTouchesBegan = YES;
 view = <UILayoutContainerView 0x7fb18a626210>;
 target= <(action=handleNavigationTransition:,
 target=<_UINavigationInteractiveTransition 0x7fb18a627a00>)>
  • 注意 : 在打印結(jié)果中,系統(tǒng)自帶的手勢只支持邊緣滑動手勢,它用的是 UIScreenEdgePanGestureRecognizer手勢,只能在控制器的邊緣才能出發(fā)手勢的方法,這樣,我們改一下,改成全屏都能出發(fā)滑動返回功能.
  • 我們來解讀一下這個打印結(jié)果 :
  • 只要觸發(fā)了UIScreenEdgePanGestureRecognizer這個手勢,就會調(diào)用_UINavigationInteractiveTransition代理的
    只要觸發(fā)UIScreenEdgePanGestureRecognizer,就會調(diào)用_UINavigationInteractiveTransition代理的
    handleNavigationTransition這個方法.
    說明 : _UINavigationInteractiveTransition代理的這個
    handleNavigationTransition方法有滑動返回的功能,只要我們創(chuàng)建新的手勢設(shè)置這個代理,實現(xiàn)這個方法就可以實現(xiàn)滑動返回的功能了,
  • 下面我們照葫蘆畫瓢,實現(xiàn)全屏滑動返回.
  • 全屏滑動返回手勢: UIPanGestureRecognizer
  • 代理: _UINavigationInteractiveTransition
  • 代理方法:handleNavigationTransition: (注意代理方法有參數(shù),記得不要遺漏了冒號)
- (void)viewDidLoad {
   [super viewDidLoad];

   // 設(shè)置代理
   id target = self.interactivePopGestureRecognizer.delegate;

   // 創(chuàng)建手勢
   UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];

   // 設(shè)置pan手勢的代理
   pan.delegate = self;

   // 添加手勢
   [self.view addGestureRecognizer:pan];

    // 將系統(tǒng)自帶的手勢覆蓋掉
   self.interactivePopGestureRecognizer.enabled = NO;
}
  • 注意了 : 這里一定要設(shè)置pan.delegate = self, 不然程序會有假死的狀況.(本章重點)

  • 做到這里,可以運行模擬器試一下, 會驚奇的發(fā)現(xiàn),能全屏滑動返回了,但是,回到根控制器后,還是能繼續(xù)滑動,這不是我們的想要的效果.所以還需要調(diào)用手勢代理中的一個方法:即是否允許接收觸摸事件.

// 表示的意思是:當擋墻控制器是根控制器了,那么就不接收觸摸事件,只有當不是根控制器時才需要接收事件.
#pragma mark - UIGestureRecognizerDelegate
// 是否觸發(fā)手勢
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return self.childViewControllers.count > 1;
}
  • 總結(jié): 手勢代理中還有很多好用的方法,比如: 是否允許同時接收多個手勢事件等方法,都是開發(fā)中常用的,可以自己去手勢代理的頭文件中自學(xué).
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糖耸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子丘薛,更是在濱河造成了極大的恐慌嘉竟,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洋侨,死亡現(xiàn)場離奇詭異舍扰,居然都是意外死亡,警方通過查閱死者的電腦和手機希坚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門边苹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吏够,你說我怎么就攤上這事勾给√脖ǎ” “怎么了锅知?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長脓钾。 經(jīng)常有香客問我售睹,道長,這世上最難降的妖魔是什么可训? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任昌妹,我火速辦了婚禮,結(jié)果婚禮上握截,老公的妹妹穿的比我還像新娘飞崖。我一直安慰自己,他們只是感情好谨胞,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布固歪。 她就那樣靜靜地躺著,像睡著了一般胯努。 火紅的嫁衣襯著肌膚如雪牢裳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天叶沛,我揣著相機與錄音蒲讯,去河邊找鬼。 笑死灰署,一個胖子當著我的面吹牛判帮,可吹牛的內(nèi)容都是我干的局嘁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼晦墙,長吁一口氣:“原來是場噩夢啊……” “哼导狡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起偎痛,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤旱捧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后踩麦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枚赡,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年谓谦,在試婚紗的時候發(fā)現(xiàn)自己被綠了贫橙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡反粥,死狀恐怖卢肃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情才顿,我是刑警寧澤莫湘,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站郑气,受9級特大地震影響幅垮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尾组,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一忙芒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讳侨,春花似錦呵萨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歹叮,卻和暖如春跑杭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咆耿。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工德谅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萨螺。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓窄做,卻偏偏與公主長得像愧驱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子椭盏,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容