Получение сенсорных координат изображения с сохранением функций панорамирования/масштабирования

Я работаю над небольшим приложением, в котором у меня есть 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);
}

Я искал МНОГО веб-страниц, решая аналогичную проблему, а также пытался заменить изображение кнопкой, используя карту в качестве фона. Он возвращает координаты, но я больше не могу панорамировать/масштабировать; не удалось получить как координаты, так и функции панорамирования/масштабирования в одном и том же коде.

Вы можете помочь мне здесь? Я застрял на несколько дней...

UPDATE: изменен обработчик события - теперь работает :-)


person Anders    schedule 29.09.2013    source источник
comment
Теперь это работает - я не понял, как использовать UIGestureRecognizer. Если вы отправите в качестве ответа, я закрою ветку. Спасибо, приятель.   -  person Anders    schedule 01.10.2013


Ответы (1)


Возможно, попробуйте это.

Метод -[UIGestureRecognizer locationInView:] вычисляет центральную точку всех точек касания в жесте.

person neoneye    schedule 01.10.2013