Как получить координаты UIImage из UITapGestureRecognizer в увеличенном изображении? - PullRequest
3 голосов
/ 19 марта 2011

У меня есть UIScrollView и внутри него есть UIImageView с изображением. Я хотел бы иметь возможность масштабирования и все еще иметь возможность получить координаты UIImage. Мои изображения имеют координаты больше, чем экран iPhone 600x800, и при текущем методе я получаю координаты только на экране iPhone. Как я могу получить координаты фактического места на UIImage, который был повернут?

Это то, что у меня так далеко:

- (void) loadView {

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


UIImage *mapImage = [UIImage imageNamed:@"Map1.png"];
imageV = [[UIImageView alloc] initWithImage:mapImage];
//imageV.userInteractionEnabled = YES;

//[imageV addGestureRecognizer:tapGesture];

//CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
scrollV = [[UIScrollView alloc] initWithFrame:imageV.frame];
scrollV.contentSize = CGSizeMake(imageV.frame.size.width, imageV.frame.size.height);

[scrollV addGestureRecognizer:tapGesture];

[scrollV addSubview:imageV];
scrollV.userInteractionEnabled = YES;
scrollV.maximumZoomScale = 5;
scrollV.minimumZoomScale = 0.5;
scrollV.bounces = NO;
scrollV.bouncesZoom = NO;
scrollV.delegate = self;

self.view = scrollV;

}



-(void)tapDetected:(UIGestureRecognizer*)recognizer{
NSLog(@"tap detected.");
CGPoint point = [recognizer locationInView:nil];

NSLog(@"x = %f y = %f", point.x, point.y );
}

-(UIView*) viewForZoomingInScrollView:(UIScrollView *)scrollView {
return [[self.view subviews] objectAtIndex:0];
}

1 Ответ

11 голосов
/ 24 марта 2011

Я только что понял, что распознаватель uitapgesture должен быть добавлен в UIImageView, и когда вызывается метод tapDetected, правильный способ получить местоположение - дать ему правильное представление, как показано ниже

CGPoint point = [recognizer locationInView:self.imageV];

Тогда можно получить координацию по изображению.

...