繁体   English   中英

子视图在父视图中接收其框架外的触摸

[英]Subview receiving touches outside its frame in parent view

我不知道为什么会这样,但是我有一个UIView的子类,该子类已添加到我的视图控制器的视图中。

productView = [[SKUProductView alloc]initWithFrame:CGRectMake(60,768, 700, 550)];
[self.view addSubview:productView];

该视图从屏幕外开始,并在平移手势事件上在屏幕上进行动画处理。尽管该视图不在屏幕上,但它正在其自身框架之外接收触摸事件。 我已经通过重写子视图中的hitTest方法开发了一种变通方法,如果touch事件不在其框架之内,则将hitTest调用返回给超级视图。

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    //Test to determine if view is offscreen or if touch is outside its frame
    if (self.frame.origin.y >= 768 || point.x > self.frame.size.width)
    {
        return [super hitTest:point withEvent:event];
    }
    else if (point.y < kSKU_SCROLLVIEW_Y_OFFSET)
    {
        return [_productTabBar hitTest:point withEvent:event];
    }

    return _productScrollView;

}

但我想知道为什么子视图首先会在其自身框架之外接收触摸事件?

为什么不使用

CGRectContainsPoint(rect, point);

确定接触点是否在视野之内?

可以肯定的是,使用NSStringFromCGRect()函数在控制台上打印视图框架,以便您了解正在发生的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM