自定義返回按鈕后邊緣滑動(dòng)返回失效的邏輯梳理

看了滑動(dòng)返回的代碼,總覺得沒有完全理解路鹰,雖然可以囫圇吞棗照搬使用凤薛,但又覺得不妥座泳,看了別人的解釋又大體相似呀邢,歸根到底是由于其中有一些細(xì)節(jié)之處沒有搞清楚洒沦,深思之后,把自己的理解及時(shí)寫下來价淌,以備翻看


首先明確滑動(dòng)返回功能:是由導(dǎo)航控制器的交互性彈出手勢識(shí)別器:self.interactivePopGestureRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:_UINavigationInteractiveTransition的對(duì)象? action:@selector(handleNavigationTransition:)在初始化創(chuàng)建的時(shí)候指定了--系統(tǒng)私有對(duì)象--響應(yīng)拖動(dòng)手勢事件--去執(zhí)行處理導(dǎo)航切換這個(gè)方法handleNavigationTransition


如何確定是這樣創(chuàng)建的呢申眼?

打印self.interactivePopGestureRecognizer,進(jìn)行內(nèi)部實(shí)現(xiàn)模擬


問題1:既然這個(gè)手勢識(shí)別器對(duì)象存在蝉衣,系統(tǒng)的私有對(duì)象和方法這個(gè)不用擔(dān)心括尸,必然存在,可是為什么還是無效呢病毡?


猜測:可能有一個(gè)方法控制拖動(dòng)事件沒有響應(yīng)濒翻,注意上方用--隔開的滿足條件

思路:按照以往的規(guī)律,target和delegate都可以響應(yīng)外部事件啦膜,那么這個(gè)手勢識(shí)別器是否還設(shè)置了delegate有送?,打印后確實(shí)如此僧家,那么可以肯定它的代理對(duì)象執(zhí)行了某個(gè)代理方法去控制判斷:如果是自定義了返回按鈕雀摘,那么這個(gè)手勢識(shí)別器就不接收UITouch這個(gè)拖動(dòng)手勢對(duì)象,或者說不接收拖動(dòng)事件八拱,這個(gè)方法類似于一個(gè)開關(guān)阵赠,方法內(nèi)部進(jìn)行了判斷涯塔,大概是這樣:if(self.navigationItem.leftBarButtonItem) ?return NO;

注意:手勢識(shí)別器即UIPanGestureRecognizer不是手勢,它是管理手勢的類清蚀,UITouch才是手勢

測試:如果不執(zhí)行這個(gè)代理方法匕荸,這個(gè)判斷就無效了,這個(gè)開關(guān)也就不起作用了枷邪,那么最直接的做法是:self.self.interactivePopGestureRecognizer.delegate = nil每聪;這樣handleNavigationTransition這個(gè)方法又可以默認(rèn)執(zhí)行了


問題2: ?設(shè)置代理為nil后,在根控制器下齿风,滑動(dòng)返回药薯,處于假死狀態(tài),這又是什么原因?qū)е碌模?/p>

原因:根控制器下救斑,依然可以默認(rèn)響應(yīng)滑動(dòng)返回上級(jí)事件童本,這顯然是不合理的,系統(tǒng)處于內(nèi)部保護(hù)脸候,終止了這種做法

區(qū)別:默認(rèn)返回按鈕穷娱,在根控制器下,為什么不會(huì)假死运沦?

思路:那個(gè)代理方法既然起開關(guān)作用泵额,決定什么情況下響應(yīng),那么它還應(yīng)該做了一個(gè)判斷條件携添,就是根控制器下不起作用嫁盲,非根控制器才起作用,而剛才已經(jīng)為nil烈掠,但又不能用系統(tǒng)提供的代理羞秤,只能自己重寫這個(gè)方法,進(jìn)行手動(dòng)控制

解決:如果導(dǎo)航控制器中要實(shí)現(xiàn)代理方法左敌,那么需要設(shè)置代理為當(dāng)前導(dǎo)航控制器對(duì)象瘾蛋,遵守代理協(xié)議<UIGestureRecognizerDelegate>

1.self.self.interactivePopGestureRecognizer.delegate = self

2.-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer ?shouldReceiveTouch:(UITouch *)touch

{

return ?self.childViewControllers.count > 1;

}


總結(jié):1. self.interactivePopGestureRecognizer既可以使用target,又可以使用delegate矫限,但是指定的對(duì)象實(shí)現(xiàn)的方法功能不一樣哺哼,一個(gè)是進(jìn)行返回切換,一個(gè)是控制什么時(shí)候才可以切換叼风,這個(gè)類的使用還真是特別取董,讓人耳目一新,原來還可以這樣搞

2. 上面的代理方法咬扇,系統(tǒng)默認(rèn)進(jìn)行了兩個(gè)判斷甲葬,一個(gè)是是否設(shè)置了leftBarButtonItem ,另一個(gè)是是否是根控制器,如果都為是懈贺,那么控制切換不執(zhí)行


感悟:學(xué)習(xí)后的思考總是一個(gè)煎熬的過程经窖,耗時(shí)又耗力坡垫,但又心知欲速則不達(dá),沒有理解清楚的地方画侣,埋下的坑冰悠,又會(huì)產(chǎn)生一個(gè)心理負(fù)擔(dān),過后還會(huì)偶然想起配乱,但又不通透溉卓,索性花點(diǎn)時(shí)間總結(jié)一下


路過的大俠,還望指出不足之處搬泥!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末桑寨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子忿檩,更是在濱河造成了極大的恐慌尉尾,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燥透,死亡現(xiàn)場離奇詭異沙咏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)班套,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門肢藐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吱韭,你說我怎么就攤上這事吆豹。” “怎么了杉女?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵瞻讽,是天一觀的道長鸳吸。 經(jīng)常有香客問我熏挎,道長,這世上最難降的妖魔是什么晌砾? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任坎拐,我火速辦了婚禮,結(jié)果婚禮上养匈,老公的妹妹穿的比我還像新娘哼勇。我一直安慰自己,他們只是感情好呕乎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布积担。 她就那樣靜靜地躺著,像睡著了一般猬仁。 火紅的嫁衣襯著肌膚如雪帝璧。 梳的紋絲不亂的頭發(fā)上先誉,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音的烁,去河邊找鬼褐耳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渴庆,可吹牛的內(nèi)容都是我干的铃芦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼襟雷,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼刃滓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耸弄,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤注盈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叙赚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體老客,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年震叮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胧砰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苇瓣,死狀恐怖尉间,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情击罪,我是刑警寧澤哲嘲,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站媳禁,受9級(jí)特大地震影響眠副,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竣稽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一囱怕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毫别,春花似錦娃弓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砾肺,卻和暖如春挽霉,著一層夾襖步出監(jiān)牢的瞬間私恬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工炼吴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留本鸣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓硅蹦,卻偏偏與公主長得像荣德,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子童芹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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