2013-09-29 2 views
0

저는 UIScrollView가있는 작은 응용 프로그램에서 작업하고 있습니다.이 내부에는 맵을 표시하는 두 배의 이미지가 있습니다. 스토리 보드 에디터에서 UIScrollView를 만들면 이미지가 동적으로로드됩니다.팬/줌 기능을 유지하면서 이미지에서 터치 좌표 가져 오기

부분적으로 작동합니다. 클릭, 확대/축소 및 감지 할 수 있지만 터치 위치를 반영하여 x/y 좌표를 반환해야합니다. - 또한 배경으로지도를 사용하여 버튼 이미지를 교체하려고

UIImage *worldMapImage = [UIImage imageNamed:@"worldmapBig.png"]; 
    imageView = [[UIImageView alloc] initWithImage:worldmapImage]; 
    imageView.userInteractionEnabled = YES; 
    imageView.multipleTouchEnabled = YES; 

    [_worldmap addSubview:imageView]; 
    _worldmap.userInteractionEnabled = YES; 
    [_worldmap setContentSize:[worldMapImage size]]; 
    [_worldmap setMinimumZoomScale:.5]; 
    [_worldmap setMaximumZoomScale:1.0]; 
    [self performSelectorOnMainThread:@selector(didLoadImageInBackground:) withObject:imageView waitUntilDone:YES]; // After loading, initially zoom out 

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)]; 
    tapGesture.numberOfTapsRequired = 1; 
    tapGesture.numberOfTouchesRequired = 1; 
    [imageView addGestureRecognizer:tapGesture]; 
} 

-(void)tapDetected:(UIGestureRecognizer*)recognizer{ 
    UIView *myView = [recognizer view]; <-- 
CGPoint touch = [recognizer locationInView:myView]; <-- 
NSLog(@"%f", touch.x); 
} 

내가, 웹 페이지를 많이 검색된 비슷한 문제를 해결했습니다 여기

내 코드의 관련 부분입니다. 좌표를 반환하지만 더 이상 이동/확대/축소 할 수 없습니다. 동일한 코드에서 좌표 및 이동/확대/축소 기능을 모두 가져올 수 없었습니다.

나를 도와 줄 수 있습니까?

+0

이제 작동합니다 - UIGestureRecognizer 사용법을 이해하지 못했습니다. 대답으로 제출하면 스레드를 닫습니다. 고마워 친구. – Anders

답변

1

는 아마도이 시도 지금은 :-) 작동 - 이벤트 핸들러가 변경되었습니다 : 나는

UPDATE가 ... 꽤 많은 일 동안 갇혀 있었어요.

- [UIGestureRecognizer locationInView :] 메서드는 제스처의 모든 touche 포인트의 중심점을 계산합니다.