2014-01-24 36 views
1

我无法弄清楚为什么会发生这种情况,但我有一个UIView的子类添加到我的视图控制器的视图中。子视图在父视图中接收到其外框之外的触摸

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

的视图开始离屏和将屏幕上的动画平移姿势event.While视图是离屏,它正在接收其自己的框架的外侧的触摸事件。我开发了一个工具,通过覆盖子视图中的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; 

}

但我不知道为什么我的子视图接收到它自己的框架外的触摸事件摆在首位?

+0

您是在故事板还是在代码中设置UIPanGesture识别器?你可以发布代码,如果你以编程的方式吗? – tanzolone

回答

0

为什么不使用

CGRectContainsPoint(rect, point); 

以确定触摸点的视图在框架内?

可以肯定的是,在控制台上使用NSStringFromCGRect()函数在控制台上打印视图,以便了解发生了什么。

相关问题