#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是什么,然后他的调用顺序才能合理的应用,来极大的缩短时间。