IOS leftBarButtonItem 難以點擊問題簡單處理

在開發(fā)中遇到這樣一個問 題,自定義的導航欄左鍵,在 IOS11以后很難點擊中,很影響用戶體驗,經(jīng)過分析以及參考其他內(nèi)容后,暫時解決;

問題原因分析:引用參考里的圖片:


IOS11之前:

是上面的結(jié)構(gòu),雖然,UIButton起點也是在20像素,但是因為其中"_UINavigationBarBackIndicatorView",在視圖中是透明的,占了前面12像素空間,而神奇的是,點擊前面的空間相當于 點擊了這個_UINavigationBarBackIndicatorView,這個會響應 自定義的back事件,因此IOS11以下點擊左邊空白區(qū)域是能響應的.


IOS11之后:_UINavigationBarBackIndicatorView,沒了,等于前面的20像素真的是空白了,而一般人都會按左上角邊緣區(qū)域,因為給人很難點擊的感覺;


解決目標:讓用戶點擊左邊20像素時也能響應消息;

解決方法:舊有的FIXEDSPACE不行了,這也是搜索中找到的最常辦法,參考文中的方法,1寫一個自己的UIViewController,處理相關(guān)內(nèi)容:

1.(可選),根據(jù)是否11以上擴大點擊區(qū)域,我的點擊區(qū)域目標是0-84,IOS11以下我設的是64,那么IOS11以上設成84,因為要左移20像素;


2.必要,改變Stack的起始位置

2.1通過約束去修改,直接改坐標,會在pushViewControler 時恢復.調(diào)用時機:

-(void)viewDidLayoutSubviews {

? ? [super viewDidLayoutSubviews];

? ? [self resetLeftBtnX];

}

2.2 當popViewControllerAnimated時會恢復,看其他同行的文章,說在viewWillAppear中加入,試過不行,而且返回時不調(diào)用:viewDidLayoutSubviews,暫時的解決辦法:在viewWillAppear中,強制重新layout,暫時解決;

-(void)viewWillAppear:(BOOL)animated {

? ? [super viewWillAppear:YES];

? ? if(IS_IOS_11_PLUS) {

? ? ? ? [self.view setNeedsLayout];

? ? }

}



由于我只是改點擊,所以只要上述操作就可以了.這樣,前面的20像素也能響應點擊事件了.


參考:

http://www.itdecent.cn/p/383cdad95a32

https://blog.csdn.net/spicyshrimp/article/details/78201042

https://blog.csdn.net/spicyShrimp/article/details/77891717

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

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

  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內(nèi)容...
    i得深刻方得S閱讀 4,979評論 1 9
  • App界面適配iOS11(包括iPhoneX的奇葩尺寸) 一劍孤城關(guān)注 2017.08.15 11:15*字數(shù) 1...
    珊珊大王閱讀 1,161評論 0 2
  • 首先感謝小易童鞋,這里自己也整理下這些容易忘記的代碼 設置導航欄的背景顏色用barTintColor self.n...
    HT_Jonson閱讀 1,070評論 0 51
  • 1,NSObject中description屬性的意義,它可以重寫嗎?答案:每當 NSLog(@"")函數(shù)中出現(xiàn) ...
    eightzg閱讀 4,339評論 2 19
  • 王生 家里的老人說我出生的那天, 屋子外面飛來許多喜鵲, 親戚們說從來沒看過這種場面, 這是大吉大利的征兆, 說我...
    十一府閱讀 315評論 0 0

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