【问题标题】:UITapRecognizer not working with ImageViewUITapRecognizer 不适用于 ImageView
【发布时间】:2016-12-14 17:29:08
【问题描述】:

我目前正在尝试为应用制作退出按钮。

我选中了UIImageView“启用用户交互”框。

在我的.h 文件中,我有这个:

@property (strong, nonatomic) IBOutlet UIImageView *signOutButtonIV;

在我的 .m 文件中,我有这个:

- (void) viewDidLoad{

[super viewDidLoad];

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

    tapGestureRecognizer.numberOfTapsRequired = 1;
    tapGestureRecognizer.numberOfTouchesRequired = 1;
    [self.signOutButtonIV addGestureRecognizer:tapGestureRecognizer];

}

-(void) tapResponder:(UITapGestureRecognizer *) sender{
    NSLog(@"single tap detected");
}

如果我改为使用[self addGestureRecognizer:tapGestureRecognizer],则会检测到轻拍。我缺少一个步骤吗?

【问题讨论】:

  • 在添加手势识别器之前可以登录userInteractionEnabled吗?
  • 使用UIImageView 代替UIButton 有什么特别的原因吗?
  • @ArtemNovichkov 我检查了它并没有启用!我在故事板中选中了“已启用用户交互”的 triats 框。但这似乎不起作用。谢谢
  • @RatulSharker 可以在图像视图上放置一个不可见按钮吗?我试过了,但我一直遇到错误“由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[ setValue:forUndefinedKey:]:此类不符合键值编码的键值。”跨度>
  • 其实我打算用setImage。上面的错误是说你添加了一个 IBOutlet / IBAction,但这并没有在代码实现中声明。

标签: ios objective-c uiimageview uitapgesturerecognizer


【解决方案1】:

添加以下行

[self.signOutButtonIV setUserInteractionEnabled:YES]; 
[PARENT_VIEW bringSubviewToFront:self.signOutButtonIV];

[self.signOutButtonIV addGestureRecognizer:tapGestureRecognizer];之前

【讨论】:

    【解决方案2】:

    感谢 Artem Novichkov 指出记录 userEnabledInteraction。

    日志返回错误。即使我在情节提要文件中选中了该框,它也没有启用。

    [signOutButtonIV setUserInteractionEnabled:YES];
    

    是解决我的问题所需要的。

    感谢阿尔乔姆!

    【讨论】:

      【解决方案3】:

      也可以使用storyboard来实现结果:-

      【讨论】:

      • 是的,我选中了那个确切的框(如我的问题中所述)
      猜你喜欢
      • 2015-04-25
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多