0
touchesBegan 함수가 있고 위치를 출력하는 UIViewController가 있습니다. 내가 화면의 중앙으로 빠르게 탭을 두 배로 경우iPad 앱 - touches 두 번 두드리기가 잘못되었습니다.
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"in");
NSArray *touchesArray = [touches allObjects];
for(int i=0; i<1; i++)
{
UITouch *touch = (UITouch *)[touchesArray objectAtIndex:i];
CGPoint point = [touch locationInView:touch.view];
NSLog(@"point = %f %f",point.x,point.y);
}
}
, 나는 다음과 같은 출력을 얻을처럼
왜 두 번째 탭은 (39,22)로 등록되고 있음을2012-02-12 21:47:13.522 MoreMost[479:707] in
2012-02-12 21:47:13.523 MoreMost[479:707] point = 698.000000 86.000000
2012-02-12 21:47:13.617 MoreMost[479:707] in
2012-02-12 21:47:13.619 MoreMost[479:707] point = 39.000000 22.000000
... iPad의 왼쪽 상단 모서리. 그러나, 나는 가운데에서 두드리고 있었다.
그래서, 두 가지 방법으로이 문제를 해결하고 싶습니다 :
1) somehow, not let the user double tap (however it seems even when I double tap fast, the touchesBegan function is called on two separate occassions)
2) figure out why that 2nd tap is being registered with the wrong coordinates.
1) 두 번 탭하면 touchesBegan : withEvent :가 두 번 호출됩니다. (그것이 작동하는 방법입니다) 2) 두 번 탭의 각 탭이 두 가지보기로 떨어지는 것 같아요, 내가 어떻게 모르는 지 묻지 마십시오. 하지만 가장 합리적인 해결책은 위치가 알려진보기로 색인을 생성하는 것입니다. 예를 들어 'touch.view'대신 'locationInView : self.view'를 사용하면 터치가 히트 테스트를 통과하는 모든보기가됩니다. – NJones
네, 효과가있었습니다. 왜 내가 touch.view, 롤 넣어 모르겠어요. 감사! – StanLe