系统UIViewController中的view的区域大小是不包括tabBar底部范围的,所以在隐藏tabBar时,子视图要是超过了UIViewController中的view的范围会导致其点击事件不能响应
解决方案
在自定义的view中重写点击区域方法
@implementationXJShopBaseView-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event{if(!self.isUserInteractionEnabled||self.hidden||self.alpha==0){returnnil;}for(UIView*subViewin[self.subviews reverseObjectEnumerator]){CGPoint convertedPoint=[subView convertPoint:point fromView:self];UIView*hitView=[subView hitTest:convertedPoint withEvent:event];if(hitView){returnhitView;}}returnself;}@end
使用自定义的UIView替换UIViewController的view
-(void)viewDidLoad{[superviewDidLoad];//替换系统自带的self.viewXJShopBaseView*baseView=[[XJShopBaseView alloc]initWithFrame:self.view.bounds];self.view=baseView;}
作者:程时鑫
链接:https://www.jianshu.com/p/b2cb3028a277
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。