需求背景:
在有tabbar的首頁(yè)點(diǎn)擊navigationbar的時(shí)間選擇器,彈出時(shí)間選擇器頁(yè)面,tabbar隱藏,對(duì)時(shí)間選擇器進(jìn)行選擇
難點(diǎn):
tabbar隱藏之后,彈出來的時(shí)間選擇器不能選擇原來tabbar位置的地方,點(diǎn)擊無響應(yīng)
解決辦法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.isUserInteractionEnabled || self.isHidden || self.alpha <= 0.01) {
return nil;
}
if ([self pointInside:point withEvent:event]) {
for (UIView *subView in [self.subviews reverseObjectEnumerator]) {
CGPoint convertedPoint = [subView convertPoint:point fromView:self];
UIView *hitTestView = [subView hitTest:convertedPoint withEvent:event];
if (hitTestView) {
return hitTestView;
}
}
return self;
} else {
for (UIView *subView in [self.subviews reverseObjectEnumerator]) {
CGPoint convertedPoint = [subView convertPoint:point fromView:self];
UIView *hitTestView = [subView hitTest:convertedPoint withEvent:event];
if (hitTestView) {
return hitTestView;
}
}
return nil;
}
return nil;
}
重寫controller的view的hittest方法,讓其在點(diǎn)擊tabbar的位置時(shí)進(jìn)行相應(yīng)
另外,在controller的loadview方法里,load重寫的這一個(gè)view
- (void)loadView
{
MJHomeControllerView *view = [[MJHomeControllerView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = view;
}