【问题标题】:Subview receiving touches outside its frame in parent view子视图在父视图中接收其框架之外的触摸
【发布时间】:2014-02-15 15:17:01
【问题描述】:

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

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

视图在屏幕外启动,并会在平移手势事件时在屏幕上生成动画。当视图在屏幕外时,它会在自己的框架之外接收触摸事件。如果触摸事件在其框架之外,我已经通过覆盖子视图中的 hitTest 方法来开发一个解决方法,以将 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;

}

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

【问题讨论】:

  • 您是在情节提要还是在代码中设置 UIPanGesture 识别器?如果您以编程方式执行代码,您可以发布代码吗?

标签: ios uiview parent-child subview


【解决方案1】:

为什么不使用

CGRectContainsPoint(rect, point);

判断触摸点是否在视框内?

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

【讨论】:

    猜你喜欢
    • 2014-10-07
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多