iOS hitTest扩大响应范围

释放双眼,带上耳机,听听看~!

在需要扩大和缩小UIButton/UISlider的响应范围时,重写 hitTest方法

hitTest:withEvent:方法的使用:

1.首先调用当前视图的pointInside:withEvent:方法判断触摸点是否在当前视图内;
2.若返回NO,则hitTest:withEvent:返回nil;
3.若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从top到bottom,即从subviews数组的末尾向前遍历,直到有子视图返回非空对象或者全部子视图遍历完毕;
4.若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束;
5.如所有子视图都返回非,则hitTest:withEvent:方法返回自身(self)。
  • 注:hitTest:withEvent:方法忽略隐藏(hidden=YES)的视图,禁止用户操作(userInteractionEnabled=YES)的视图,以及alpha级别小于0.01(alpha<0.01)的视图。
//扩大slider的响应范围
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (CGRectContainsPoint(CGRectInset(self.bounds, -20, -20), point) &&!CGRectContainsPoint(self.textView.frame, point)){
return self.slider;
}
return [super hitTest:point withEvent:event];
}

判断触摸点是否在某个范围上

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
return YES;
}

人已赞赏
Git命令系列iOS文章

Git 基本操作

2020-2-20 20:24:37

iOS文章

IOS开发UIActivityIndicatorView的使用

2020-2-20 21:22:20

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索