iOS UIView中hitTest:withEvent方法触摸的位置设置
admin
2023-02-09 08:20:05
0
#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是什么,然后他的调用顺序才能合理的应用,来极大的缩短时间。

相关内容

热门资讯

今日重大发现“白金岛放炮罚.到... 有 亲,根据资深记者爆料白金岛放炮罚是可以开挂的,确实有挂(咨询软件无需...
终于明白“丽水都莱.怎么装挂?... 家人们!今天小编来为大家解答丽水都莱透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
【今日要闻】“乐乐四川麻将.到... 网上科普关于“乐乐四川麻将有没有挂”话题很是火热,小编也是针对乐乐四川麻将作*弊开挂的方法以及开挂对...
终于懂了“红豆牛牛.开挂神器?... 终于懂了“红豆牛牛.开挂神器?”确实真的有挂您好,红豆牛牛这个游戏其实有挂的,确实是有挂的,需要了解...
今日重磅消息“乐暴延边麻将.开... 网上科普关于“乐暴延边麻将有没有挂”话题很是火热,小编也是针对乐暴延边麻将作*弊开挂的方法以及开挂对...
玩家分享攻略“先锋大厅.到底是... 网上科普关于“先锋大厅有没有挂”话题很是火热,小编也是针对先锋大厅作*弊开挂的方法以及开挂对应的知识...
【第一资讯】“蜀山四川麻将.到... 家人们!今天小编来为大家解答蜀山四川麻将透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
【第一资讯】“新皇豪炸金花.有... 家人们!今天小编来为大家解答新皇豪炸金花透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...
【第一资讯】“三鑫联盟.真的有... 有 亲,根据资深记者爆料三鑫联盟是可以开挂的,确实有挂(咨询软件无需打开...
今日重大通报“新上游牛牛.怎么... 有 亲,根据资深记者爆料新上游牛牛是可以开挂的,确实有挂(咨询软件无需打...