0
내 기본보기에 UIView
무리가 있습니다. touchesBegan, touchesMoved 및 touchesEnded 기능을 앱에 추가했습니다.iOS -보기 당 한 번만 터치합니다.
터치했을 때보기의 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
가 동일한보기를 여러 번 덤프 . 다시보기 밖으로 이동할 때까지보기 위로 이동할 때 한 번만 그것을 싶습니다.
제안 사항? 지난보기의
때로는이 같은 전망 할 수있다 최적화 할 수 있습니다 행은 이동하지만보기가 바깥으로 가야하고 다시 두 번 계산해야합니다. 따라서 마지막 뷰를 추적하면 같은 뷰가 두 번 연속으로 표시되지 않습니다. – peace4theapes
예, 움직일 때 그 뷰에 여전히 있는지 확인할 수 있습니다. 그렇지 않으면 currentView를 nil로 재설정 한 다음 원래 뷰로 다시 이동하면 새로운 히트로 등록됩니다 –