2

我有许多类,并想将 UIGestureRecognizer 添加到他们的 UIImageViews。

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

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 方法中都有一个打印输出。什么都没有打印出来。

4

1 回答 1

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 中删除该协议

希望能帮助到你

于 2011-01-09T06:00:20.300 回答