iOS 的UIView 的hitTest的分析

来源:互联网 发布:红圈软件打卡 编辑:程序博客网 时间:2024/06/10 03:35

hitTest的用法:

(1)当在一个view上添加一个屏蔽罩,但又不影响对下面view的操作,也就是可以透过屏蔽罩对下面的view进行操作,这个函数就很好用了。

将下面的函数添加到UIView的子类中,也就是屏蔽罩类中即可。

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *hitView = [super hitTest:point withEvent:event];
if (hitView == self)
{
return nil;
}
else
{
return hitView;
}
}
(2)父视图中有布局重叠的且都可响应用户操作的对象,如:ScrollView and Button,如果Button在ScrollView下面,正常情况下Button是不会成为第一响应者的,如果想让Button可以响应在其布局内的触摸事件,可以在Button和ScrollView的父View中重写hitTest:withEvent方法

 (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
CGPoint hitPoint = [_testButton convertPoint:point fromView:self];
if ([_testButton pointInside:hitPoint withEvent:event])
    return _testButton;
return [super hitTest:point withEvent:event];

}//_testButton是指定响应对象的 弱 引用

1 0
原创粉丝点击