解决 UITabBar 中间凸起点击完全有反应
从网上寻找没有找到一个比较令自己满意的的解决方法,网上大部分都是一些自定义一个继承自系统UITabbar的LBTabbar,来实现中间凸起的按钮的点击触发时间
实现思路
- 研究iOS 事件传递机制(网上很多资料这里不再详细阐述了)
- 禁止凸起按钮覆盖住地UITabBarItem
>let midTabBarItenm = UITabBarItem()
midTabBarItenm.isEnabled = false
- 为UITabBar写一个分类,重写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{
//将点击点,转换坐标到凸起的按钮上,判断这个点是否在按钮上
let newPoint = self.convert(point, to: subview)
//如果是,将按钮作为处理点击事件的的view 返回
if subview.bounds.contains(newPoint){
view = subview
}
}
}
return view
}
}
这样就可以完美的用很少的代码来解决这个中间凸起的点击事件了