2014-02-05 3 views
0

У меня есть изображение внутри UIImageView, которое имеет жест для масштабирования, как вы можете видеть из кода.iOS Добавить tap Жест к UIImageView

Я хочу иметь возможность вставлять кликируемые области изображения, а не на экран, поэтому, если я нажимаю точку изображения с минимальным или максимальным масштабированием, я всегда возвращаю то же значение.

Я мог бы сказать UIGestureRecognizer, могу ли я это сделать? Почему я не могу понять, работает ли я или нет.

благодарит

Мой код:

UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self   action:@selector(handleTwoFingerTap:)]; 
[twoFingerTap setNumberOfTouchesRequired:2]; 
[img addGestureRecognizer:twoFingerTap]; 
float minimumScale = 0.4;//This is the minimum scale, set it to whatever you want. 1.0 = default 
scroll.maximumZoomScale = 4.0; 
scroll.minimumZoomScale = minimumScale; 
scroll.zoomScale = minimumScale; 
[scroll setContentMode:UIViewContentModeScaleAspectFit]; 
[img sizeToFit]; 
[scroll setContentSize:CGSizeMake(img.frame.size.width, img.frame.size.height)]; 

[control setSelectedSegmentIndex:0]; 
[control addTarget:self 
      action:@selector(action:) 
    forControlEvents:UIControlEventValueChanged]; 

//THIS IS MY RECOGNIZER ON IMAGE 
UIGestureRecognizer *recognizerImage = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImage:)]; 
[(UITapGestureRecognizer *)recognizer setNumberOfTapsRequired:2]; 
[img addGestureRecognizer:recognizer]; 
} 


- (void)tapImage:(UITapGestureRecognizer *)recognizer { 

    CGPoint location = [recognizer locationInView:self.view]; 
    NSLog(@"x %f y %f",location.x, location.y); 
} 
+0

Хорошо, вы наметили проблему. Что вы сделали для его решения? Вам нужно придумать логику, которая использует пропорцию исходного размера изображения к текущему размеру изображения, чтобы преобразовать координаты вида в координаты изображения. –

+0

http://stackoverflow.com/questions/9008975/how-to-tap-to-zoom-and-double-tap-to-zoom-out-with-uiscrollview/9009554#9009554 –

ответ

1

попробовать с помощью ImageView в качестве ссылки:

CGPoint location = [recognizer locationInView:recognizer.view]; 

Дай мне знать, если это работает.

0
- (void)tapImage:(UITapGestureRecognizer *)recognizer { 

    // CGPoint location = [recognizer locationInView:self.view]; // self.view will always be the same. You need to use the view on which the user tapped. It's `recognizer.view` 

    CGPoint location = [recognizer locationInView:recognizer.view]; 

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

Если вы хотите узнать больше о UIGestures тогда я уже получил отличный учебник для вас.

http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more

Смежные вопросы