我的主视图中有一堆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
多次转储相同的视图。我想在视图上移动时将其限制为仅一次,直到再次移出视图。
有什么建议吗?
答案 0 :(得分:1)
跟踪触摸移动到的最后一个视图,然后您可以优化您的功能以检查触摸是否仍然在该视图中,然后再检查其他人