2012-05-17 3 views
0

В моем обработчике распознавателя жестов мне нужно знать, какой элемент на экране подключен распознаватель. Например, если пользователь удаляет изображение, как мой обработчик может узнать, какое изображение было использовано?Как я могу определить, какой вид был использован в iOS?

ответ

7

При создании распознавателя жестов вы всегда связываете его с видом. Когда обнаружен жест и активируется селектор, связанный с созданным жестом, вы можете использовать gesture.View для определения связанного представления с жестом.

Вот пример кода

UIImageView *imageView = self.someImageView; 
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageSingleTapped:)]; 
[imageView addGestureRecognizer:singleTapGesture]; 

[singleTapGesture release]; 


- (void) imageSingleTapped:(UIGestureRecognizer*)recognizer 
{ 
    UIView *viewTiedWithRecognizer = recognizer.view; // This is the view associated with gesture recognizer. 
} 
1

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

CGPoint point = [gestureRecognizer locationInView:self]; 
CGPoint offset = self.scrollView.contentOffset; 
CGPoint contentPoint = CGPointMake(point.x + offset.x, point.y + offset.y); 

for (UIView *view in self.scrollView.subviews) 
    if (CGRectContainsPoint(view.frame, contentPoint)) 
     return view; 

return nil; 

Также известен как грубая сила.


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

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