Распознавание одиночного и двойного нажатия на UIScrollView

У меня есть UIScrollView с несколькими UIView, содержащими UIImageView и UILabel. Когда одно из этих изображений нажато один раз, отображается окно с отдельным текстом. Но теперь я также хочу реализовать возможность масштабирования и прокрутки изображений (покажите UIImageView с изображениями в ScrollView, на самом деле это не проблема). Но мне нужно знать, когда изображение дважды нажато.

В настоящее время я использую UITapGestureRecognizer с NumberOfTapsRequires:1, чтобы показать поле с текстами. Но второй UITapGestureRecognizer с требуемыми 2 касаниями не работает, потому что первый Recognizer снимается раньше и отображает окно на весь экран.

Может у вас есть идея, как это реализовать. Было бы хорошо, если бы это было UITapGesture-Solution :)

Я пробовал это сейчас, но это все еще не работает:

UITapGestureRecognizer *gR;
gR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ScrollView_onTap:)];
[gR setNumberOfTapsRequired:1];
[tmpPage addGestureRecognizer:gR];

gR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showFunctionMenu:)];
[gR setNumberOfTapsRequired:2];
[tmpPage addGestureRecognizer:gR];

[gR release];
gR = nil;

Второй распознаватель снимается только иногда, но в основном первый. Любые идеи?


person Kevin Glier    schedule 14.04.2011    source источник


Ответы (2)


@ Кевин, я думаю, вы хотите определить numberOfTapsRequired, а не numberOfTouchesRequired, это разные вещи. Проверьте документацию на то же самое для большей ясности

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITapGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/cl/UITapGestureRecognizer

person Robin    schedule 14.04.2011
comment
О, я на самом деле имел в виду numberOfTapsRequired, исправил это в своем вопросе. Но спасибо за ссылку, я действительно не знал разницы между ними. - person Kevin Glier; 14.04.2011

Решением может быть использование следующего фрагмента кода, где requireGestureRecognizerToFail поможет вам:

UITapGestureRecognizer *singleTapGR, *doubleTapGR;
singleTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self
    action:@selector(mySingleTapHandler)];
doubleTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self
    action:@selector(myDoubleTapHandler)];
doubleTapGR.numberOfTapsRequired = 2;
[singleTapGR requireGestureRecognizerToFail:doubleTapGR];
[view addGestureRecognizer:singleTapGR];
[view addGestureRecognizer:doubleTapGR];
person iOS-Coder    schedule 05.09.2012