2011-01-08 33 views
2

我有许多类,并且想要将UIGestureRecognizer添加到它们的UIImageViews中。UIGestureRecognizer只适用于一个类

我给所有的类增加了一个。事情是我复制代码,以便每个类都添加相同的识别器。这些是本地识别器

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleSingleTap:)]; 
[singleTap setNumberOfTapsRequired:1]; 
[background addGestureRecognizer:singleTap]; 
[singleTap release]; 

所以它应该仍然适用于每个类。

问题是它只适用于第一类,而不适用于其他类。

背景是UIImageView并存在于每个类中。所以我有多个背景。

我介绍了每个新的ModelViewController类,这可能是什么问题?

我将识别如下

- (void) handleSingleTap : (UIGestureRecognizer*) sender 
{ 
     //do whatever 
} 

每类还实现了

@interface Someclass : UIViewController <UIGestureRecognizerDelegate> 

林不知道为什么它不是,虽然工作。我在每个handleSingleTap方法中都有一个打印输出。并没有打印。

回答

9

首先 你加入相同识别对象不同的看法?如果这样,将无法正常工作。 UIGestureRecognizer对象仅在一个视图中检测/跟踪手势。所以一定要确保你有一个不同的识别对象为您的每一个意见,如:

UITapGestureRecognizer *r1 = [UITapGestureRecognizer alloc] initWithTarget:self action:...]; 
[view1 addGestureRecognizer:r1]; 
[r1 release]; 

UITapGestureRecognizer *r2 = [UITapGestureRecognizer alloc] initWithTarget:self action:...]; 
[view2 addGestureRecognizer:r2]; 
[r2 release]; 

... 

确保视图(在这种情况下的UIImageView)是[uiimageview setUserInteractionEnabled:YES];

如果你只是检测简单的触摸则没有必要采取UIGestureRecognizerDelegate协议,因此单从@interface删除该协议

希望它可以帮助

+0

其实我只是需要添加这个[someUiImageView setUserInteractionEnabled:YES];感谢您的帮助 – jarryd 2011-01-09 22:50:02

相关问题