iOS11適配UIToolbar無法點(diǎn)擊問題

前言

一個(gè)簡單的瀏覽器,使用到UIToolbar做底部工具欄,在 iOS11 上就有點(diǎn)擊無響應(yīng)的問題?,F(xiàn)在發(fā)現(xiàn)蘋果一到大系統(tǒng)版本,很多 UIView的實(shí)現(xiàn)和生命周期都變化,他們系統(tǒng)不用兼容 iOS10,想怎么改就怎么改,沒有顧慮,但是我們作為開發(fā)者只能受累。


C93266DA-14DD-46E0-9064-F5F5728E67EF.png

iOS 11

原因:Toolbar 在iOS11默認(rèn)添加有_UIToolbarContentView,_UIToolbarContentView _UIButtonBarStackView覆蓋在自定義的按鈕上面,導(dǎo)致按鈕無響應(yīng)。

在Toolbar 上有_UIButtonBarStackView.png

在 Toolbar 上層有_UIToolbarContentView.png

解決

為了解決iOS11(與較低版本兼容)的問題,您只需要在UIToolBar被添加為UI層次結(jié)構(gòu)的子視圖之后,調(diào)用 layoutIfNeeded方法,UIToolbarContentView會(huì)降低到UIToolBar的第一個(gè)子視圖,然后你就可以將所有的子視圖添加到最頂層。

For example in ObjC,

    UIToolbar *toolbar = [UIToolbar new];
    [self addSubview: toolbar];
    [toolbar layoutIfNeeded];

    <here one can add all subviews needed>

在創(chuàng)建成功后,使用layoutIfNeeded方法,讓_UIToolbarContentView馬上生效,這樣在添加子視圖就沒有問題啦。


正常后_UIToolbarContentView.png

總結(jié)

iOS11 上的 NavigationBar 好像也有相似的結(jié)構(gòu)變化,每一次新系統(tǒng),用戶無愿意升級,開發(fā)者為適配要付出更多,一方面是蘋果的改變壓力在加大,系統(tǒng)的維護(hù)也是一個(gè)很大工作;另一方面 App 的界面越來越復(fù)雜,如果在搭建時(shí)沒有設(shè)計(jì)好 UI 框架,部分依賴系統(tǒng)組件功能,導(dǎo)致受到影響也比較大。

參考閱讀


注:本文首發(fā)于 iHTCboy's blog,如若轉(zhuǎn)載,請注明來源。

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

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,620評論 4 61
  • iOS 11 為整個(gè)生態(tài)系統(tǒng)的 UI 元素帶來了一種更加大膽、動(dòng)態(tài)的新風(fēng)格。 本文介紹iOS11中在UI方面做了哪...
    阿凡提說AI閱讀 642評論 0 1
  • 本文為作者原創(chuàng),未經(jīng)作者允許不得轉(zhuǎn)載。該文同時(shí)發(fā)表在騰訊bugly公眾號:https://mp.weixin.qq...
    sonialiu閱讀 101,925評論 74 283
  • 茄子:一條 魚松:若干 油:一盤 水:少許 白醋:少許 茄汁:少許 泰式酸辣醬:少許 生粉:少許 白砂糖:一調(diào)匙 ...
    米小可2018閱讀 780評論 0 1
  • 今天是小云朵的第17天!白天拍了組照片,之后睡的呼呼的,晚上也睡的很早! 現(xiàn)在有朋友鄰居聽說我們是倆女孩,都會(huì)祝賀...
    冰藍(lán)兒8閱讀 372評論 0 0

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