单一& UIScrollView上的双击识别

时间:2011-04-14 08:47:57

标签: iphone uiscrollview gesture-recognition

我有一个UIScrollView,里面有几个包含UIImageView和UILabel的UIView。当其中一个图像被单击时,将显示带有单个文本的框。但是现在我还想实现缩放和滚动到图像的可能性(用ScrollView中的图像显示UIImageView,实际上这不是问题)。但是我需要知道,当图片是Double-Tapped时。

我目前使用带有NumberOfTapsRequires:1的UITapGestureRecognizer来显示包含文本的Box。但是第二个UITapGestureRecognizer需要触摸2不起作用,因为第一个识别器在之前拍摄并在整个屏幕上显示该框。

也许你有一个想法,如何实现这一点。如果是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;

第二个识别器有时只拍摄,但主要是第一个。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

解决方案可能是使用以下代码片段,其中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];

答案 1 :(得分:1)

@Kevin我想​​你要定义numberOfTapsRequired而不是numberOfTouchesRequired两者都是不同的东西。有关更清晰的信息,请查看相同的文档

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