【问题标题】:UITapGestureRecognizer doesn't fire up on UIView SubclassUITapGestureRecognizer 不会在 UIView 子类上启动
【发布时间】:2012-06-11 11:08:04
【问题描述】:

我创建了 UIView 的自定义子类,因为我需要重写 drawRect 方法。 我尝试向它添加一个 UITapGestureRecognizer ,但这对我不起作用。 这里,我的 ViewController 的代码:

MyCustomView *customView = [[MyCustomView alloc] initWithFrame:CGRectFrame(0, 30, 30, 30)];
[customView setUserInteractionEnabled:YES];

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)];
[customView addGestureRecognizer:tapGestureRecognizer];

我不明白为什么当我触摸我的 UIView 子类对象时,手势识别器没有启动。

提前非常感谢!

解决了!

我的视图位于 UIImageView 上,而 UIImageView 没有将 userInteractionEnabled 设置为 YES。

【问题讨论】:

  • 你的边界/框架是否正确?
  • 显然是的,我的子类实际上是一个用 CoreGraphics 绘制的圆。帧是:10、30、30、30。
  • 有关信息(它可能会有所帮助),我向您展示的代码位于 tableView:cellForRowAtIndexPath 方法中。一个想法?
  • 在这种情况下,如果您将 customView 声明为 UIControl 而不是 UIView 并删除 UITapGestureRecognizer 并向您的 CustomView 添加目标(如向 UIButton 添加目标)会更好
  • 我用 UIControl 试过了,也不行。

标签: iphone objective-c ios5 uiview uigesturerecognizer


【解决方案1】:

解决了!

我的视图位于 UIImageView 上,而 UIImageView 没有将 userInteractionEnabled 设置为 YES。

【讨论】:

  • 这甚至在 3 年后帮助了我。谢谢!
【解决方案2】:

确保将其显示在某处 (addSubview)。

【讨论】:

  • 是的,我展示了我的观点。我在添加手势识别器之后创建了一个 addSubview 方法。
【解决方案3】:

还要确保 userInteractionEnabled 设置为 true。如果是这样,请发布创建和连接手势识别器的代码。

【讨论】:

  • userInteractionEnabled 设置为 true。我在主题顶部的第一个代码中发布了代码。提前致谢
【解决方案4】:

在要添加的子视图上将 UserInteractionEnable 检查设置为 true,并在选择器方法中,将对象与它一起传递,即

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething:)];

并将选择器方法设为

-(void) doSomething:(UITapGestureRecognizer *)gesture;

如果您仍有问题,请告诉我。 谢谢!

【讨论】:

  • 只是我添加子视图的 UIImageView 不是 userInteractionEnabled... 已修复,谢谢!
  • 太好了。现在不要忘记留下未答复或未标记的帖子。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
相关资源
最近更新 更多