2011-04-14 124 views
1

我有一个包含UIImageView和UILabel的UIViews的UIScrollView。当其中一个图像是单击时,将显示带有单独文本的文本框。但是现在我也想实现放大和滚动图像的可能性(在ScrollView中显示带有图像的UIImageView,实际上这不是问题)。但我需要知道,当图片是双击。UIScrollView上的单击和双击识别

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

也许你有一个想法,如何实现这一点。这将是很好,如果它是一个UITapGesture的解决方案:)

我已经试过了现在这个样子,但它仍然不能正常工作:

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; 

第二个识别器只是偶尔出手,但主要是第一个。有任何想法吗?

回答

1

@Kevin我想​​你想定义numberOfTapsRequired而不是numberOfTouchesRequired两者都是不同的东西。检查相同的文档更清晰

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

+0

哦,其实我的意思numberOfTapsRequired,纠正它在我的问题。但感谢链接,我真的不知道两者之间的区别。 – 2011-04-14 09:44:02

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];