解決 UITabBar 中間凸起點(diǎn)擊完全有反應(yīng)
從網(wǎng)上尋找沒有找到一個(gè)比較令自己滿意的的解決方法,網(wǎng)上大部分都是一些自定義一個(gè)繼承自系統(tǒng)UITabbar的LBTabbar,來實(shí)現(xiàn)中間凸起的按鈕的點(diǎn)擊觸發(fā)時(shí)間
實(shí)現(xiàn)思路
- 研究iOS 事件傳遞機(jī)制(網(wǎng)上很多資料這里不再詳細(xì)闡述了)
- 禁止凸起按鈕覆蓋住地UITabBarItem
>let midTabBarItenm = UITabBarItem()
midTabBarItenm.isEnabled = false
- 為UITabBar寫一個(gè)分類,重寫hitTest方法
>extension UITabBar{
> open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
var view = super.hitTest(point, with: event)
for subview in subviews {
//用tag是為了尋找中間凸起的按鈕
if subview.tag == 1000{
//將點(diǎn)擊點(diǎn),轉(zhuǎn)換坐標(biāo)到凸起的按鈕上,判斷這個(gè)點(diǎn)是否在按鈕上
let newPoint = self.convert(point, to: subview)
//如果是,將按鈕作為處理點(diǎn)擊事件的的view 返回
if subview.bounds.contains(newPoint){
view = subview
}
}
}
return view
}
}
這樣就可以完美的用很少的代碼來解決這個(gè)中間凸起的點(diǎn)擊事件了