iOS - 每个视图只触摸一次

时间:2012-07-20 19:10:30

标签: iphone objective-c ios cocoa ipad

我的主视图中有一堆UIView。我在应用程序中添加了touchesBegan,touchesMoved和touchesEnded功能。

移动时,除非触摸超出视图的CGRect,否则该点的视图将多次显示。我想在移动视图时只引用每个视图一次,除非移出CGRect然后重新进入,否则不予考虑。这是我的代码:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *myTouch = [touches anyObject];

    CGPoint point = [myTouch locationInView:self.view];

    UIView *movedView = [self viewAtPoint:point];

    if(movedView != nil)
    {
    NSLog(@"Touches Moved - %@",movedView.name);
    }
}


-(UIView *) viewAtPoint:(CGPoint) point
{   
CGRect touchRect = CGRectMake(point.x, point.y, 1.0, 1.0);

    for( UIView *c in viewArray.views ){
        if( CGRectIntersectsRect(c.frame, touchRect) ){
            return c; 
        }       
    }
    return nil;
}

因此NSLog多次转储相同的视图。我想在视图上移动时将其限制为仅一次,直到再次移出视图。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

跟踪触摸移动到的最后一个视图,然后您可以优化您的功能以检查触摸是否仍然在该视图中,然后再检查其他人