UIGestureRecognizer仅适用于One类

时间:2011-01-08 18:54:37

标签: iphone uigesturerecognizer

我有很多类,想要在他们的UIImageViews中添加一个UIGestureRecognizer。

我正确地为所有类添加一个。事情是我重复代码,以便每个类添加相同的识别器。这些是本地识别器

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

所以它应该仍适用于每个班级。

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

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

我展示了每个新的ModelViewController类,这可能是问题所在吗?

我使用识别器如下

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

每个类也实现

@interface Someclass : UIViewController <UIGestureRecognizerDelegate>

我不知道为什么它不起作用。我在每个handleSingleTap方法中打印出来。什么都没有打印出来。

1 个答案:

答案 0 :(得分: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删除该协议

希望有所帮助