iOSUIView中hitTest:withEvent方法触摸的位置设置

#pragma mark 在UIView视图结构中查找点击view的触摸事件
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    
    // 如果不可以交互 | 隐藏 | 透明度太小 3者任意一个都忽略不能点击
    if(!self.userInteractionEnabled || self.hidden || self.alpha<=0.01){
        return nil;
    }
    if([self pointInside:point withEvent:event]){
        
       __block UIView *hit =  nil;
        
        //NSEnumerationReverse 倒序
        [self.subviews enumerateObjectsWithOptions:(NSEnumerationReverse) usingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            
            ///进行坐标转化
            CGPoint vonverPoint = [self convertPoint:point toView:obj];
            hit = [obj hitTest:vonverPoint withEvent:event];
            if(hit){
                *stop = YES;
            }
        }];
        if(hit){
            return hit;
        }else{
            return self;
        }
    }else{
        return nil;
    }
}

#pragma mark 触摸的位置是否在当前view视图中合适的点击位置
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    
    CGFloat x1 = point.x; // 触摸的x
    CGFloat y1 = point.y; // 触摸的y
    
    CGFloat x2 = self.frame.size.width/2; //view的 x
    CGFloat y2 = self.frame.size.height/2; //view的 y
    
    
    double dis = sqrt((x1-x2 )*(x1-x2) + (y1-y2 )*(y1-y2)); //这里设置自己的判断,button的大小 或者按钮中心的一点 或者buton里放置的最大圆等
    if(dis<=self.frame.size.width/2){ //判断当前触摸的点是不是自己要点击的区域
        return YES;
    }else{
        return NO;
    }
}

在UIView中做的转盘游戏,我们需要判断点击的位置,然后做对应的点击事件处理,我们就可以用上面的办法,或者tabBar凸出的部分等都会用到,首先就要了解hitTest是什么,然后他的调用顺序才能合理的应用,来极大的缩短时间。

成都创新互联是专业的印江网站建设公司,印江接单;提供成都网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行印江网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!


当前题目:iOSUIView中hitTest:withEvent方法触摸的位置设置
文章位置:http://bzwzjz.com/article/gdhjpg.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设费用 手机网站建设 成都商城网站制作 品牌网站建设 宜宾网站设计 定制网站设计 营销网站建设 成都企业网站建设 H5网站制作 重庆网站制作 成都网站制作 成都商城网站建设 手机网站制作 外贸营销网站建设 成都网站建设公司 高端网站设计推广 成都模版网站建设 自适应网站建设 移动手机网站制作 成都企业网站制作 网站建设推广 手机网站制作