【问题标题】:Adding Tap Gesture on UIImage在 UIImage 上添加点击手势
【发布时间】:2012-02-09 06:27:54
【问题描述】:

我正在尝试制作可点击的 UIImage,用户可以点击它然后它会动画...

我正在使用 UIScrollVIew,这就是我使用 UITapGesture 而不是 touchesBegan 的原因,而且 UIGestureRecognizer 似乎与 UIImage 不兼容...

我说的对吗?

我不断收到此错误消息

例如消息的接收器类型“UIImage”未声明方法 使用选择器“addGestureRecognizer”

还有其他方法吗?

【问题讨论】:

标签: objective-c ios uiimage core-animation


【解决方案1】:

你必须在 UIImageView 中添加 TapGesture 而不是 UIImage

imgView.userInteractionEnabled = YES;

UITapGestureRecognizer *tapGesture1 = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(tapGesture:)];

tapGesture1.numberOfTapsRequired = 1;

[tapGesture1 setDelegate:self];

[imgView addGestureRecognizer:tapGesture1];

[tapGesture1 release];

您可以使用定义的选择器响应点击并在那里执行操作

- (void) tapGesture: (id)sender
{
    //handle Tap...
 }

【讨论】:

    【解决方案2】:

    您必须将手势添加到 UIImageView,而不是 UIImage

    【讨论】:

    • 它不适用于核心动画。我在这里要做的是,当你点击它时,图像会动画。
    • 这里的重点是UIImage无法接收到触摸事件。您必须在其他地方处理触摸事件。
    【解决方案3】:

    您可以简单地将 TapGestureRecognizer 添加到 UIImageView。您必须使用 UIImageView 因为手势识别器只允许添加到视图中。

    UIView *someView = [[UIView alloc] initWithFrame:CGRectZero];
    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
    tapRecognizer.numberOfTapsRequired = 1;
    [someView addGestureRecognizer:tapRecognizer];

    您可以使用定义的选择器响应点击并在那里执行操作

    - (void)tapAction:(UITapGestureRecognizer *)tap
    {
        // 做东西
    }

    【讨论】:

      【解决方案4】:

      尝试使用UIButton 而不是UIIMage,并使UIButton 类型自定义。单击相同的按钮,您可以显示动画。

      【讨论】:

      • UIButton 可以动画化吗?由于 CoreAnimation,我使用了 UIImage。
      • 这只是一种解决方法,但不是正确的答案。最好的方法是将手势添加到 UIImageView。不要滥用按钮作为图片,这不是正确的做法。
      • @mariusLAN :您可以分享您的想法作为答案。
      • @mariusLAN :我还建议您证明您的回答是正确的。有很多方法可以解决任何问题,但 UIButton 旨在在用户触摸位置屏幕时触发事件。这就是 Crisn 所要求的。
      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多