美文网首页
超出父视图的子视图的点击范围

超出父视图的子视图的点击范围

作者: JaromeHuang | 来源:发表于2016-06-17 16:51 被阅读65次

    问题

    • 有时候们会遇到这样的需求,在一个View 上了UIButton,而UIButton是的范围是超出了View的,这时候,如果点击UIButton 是没效果的,如图:在UITabBar上的中间大按钮,点击大按钮tabBar 已外的区域,正常是没效果的


      Simulator Screen Shot 2016年6月17日 下午4.55.24.png

    解决办法

    • 1.自定义UITabBar:建一个继承UITabBar的类:XJTabBar
    • 2.在XJTabBar 实现以下方法
    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    NSLog(@"%@", NSStringFromCGPoint(point));
    
    if (self.clipsToBounds || self.hidden || (self.alpha == 0.f)) {
    
    return nil;
    
    }
    
    UIView *result = [super hitTest:point withEvent:event];
    
    if (result) {
    
    return result;
    
    }
    
    for (UIView *subview in self.subviews.reverseObjectEnumerator) {
    
    CGPoint subPoint = [subview convertPoint:point fromView:self];
    
    result = [subview hitTest:subPoint withEvent:event];
    
    if (result) {
    
    return result;
    
    }
    
    }
    
    return nil;
    
    }
    
    
    

    '```

    • 3.在自定义的UITabBarController,的- (void)viewDidLoad 方法
      调用此方法
    /**
     *  利用 KVC 把系统的 tabBar 类型改为自定义类型。
     */
    - (void)setUpTabBar {
        [self setValue:[[CYLTabBar alloc] init] forKey:@"tabBar"];
    }
    
    

    相关文章

      网友评论

          本文标题:超出父视图的子视图的点击范围

          本文链接:https://www.haomeiwen.com/subject/odyvdttx.html