iphone - UIGestureRecognizer 仅适用于一个类

标签 iphone uigesturerecognizer

我有很多类,想要将 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 方法中都有一个打印输出。并且没有打印任何内容。

最佳答案

第一 您是否将相同识别器对象添加到不同的 View 中?如果是这样那就行不通了。 UIGestureRecognizer 对象仅检测/跟踪一个 View 中的手势。因此,请确保您的每个 View 都有不同的识别器对象,例如:

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

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

...

第二 确保 View (在本例中为 UIImageView)是 [uiimageview setUserInteractionEnabled:YES];

第三如果你只是检测简单的触摸,那么没有必要采用UIGestureRecognizerDelegate协议(protocol),所以只需从@interface中删除该协议(protocol)即可

希望对你有帮助

关于iphone - UIGestureRecognizer 仅适用于一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635561/

相关文章:

ios - 将 iPad 应用程序转换为 iPhone 应用程序?

iPhone 不调用指定号码,我想知道为什么?

iphone - UILongPressGestureRecognizer 开始后的第二次触摸

ios - iOS 应用程序中的构建信息(构建日期/时间应用程序)

ios - IOS动态添加URL Scheme

ios - 如果 UIGestureRecognizer 触发,如何取消按钮点击?

objective-c - SpriteKit 手势识别器

ios - 如何给出特定的手势识别器

ios - 如何缩放 CALayer 以适应视频层

iphone - 如何检测 UITableViewCell 上的 "long Tap"手势