【问题标题】:Tap detection not working on UIImageView点击检测在 UIImageView 上不起作用
【发布时间】:2014-05-20 16:46:15
【问题描述】:

在我的 .m 文件中我添加了:

@property (strong, nonatomic) UIImageView *star1;

然后在我做的一个方法中:

UIImage *star1Image;
star1Image = [UIImage imageNamed:@"staryes"];
self.star1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)];
self.star1.tag = 800;
[self.star1 setImage:star1Image];
[ratingLabelBody addSubview:self.star1];

在与此无关的几行之后,我有:

[self.star1 setUserInteractionEnabled:YES];
UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgTouchUp:)];
tapped.numberOfTapsRequired = 1;
[self.star1 addGestureRecognizer:tapped];

最后在我实现的 .m 文件中:

-(void)imgTouchUp:(id)sender {
    NSLog(@"imgTouchUp");
    UITapGestureRecognizer *gesture = (UITapGestureRecognizer *)sender;
    NSLog(@"tap detected on %li", (long)gesture.view.tag);
}

有了这一切,它应该可以识别我的图像上的点击,但什么也没发生。有什么想法吗?

【问题讨论】:

  • ratingLabelBody UILabel?你也这样做了:[ratingLabelBody setUserInteractionEnabled:YES]
  • @Larme 你说得对,我忘了将setUserInteractionEnabled 添加到YES。 (顺便说一句,ratingLabelBodyUIView)。它现在正在工作!谢谢!

标签: ios uiimageview uitapgesturerecognizer


【解决方案1】:

因此,由于 UILabelUIImageView 等组件并非设计为“可触摸”的,因此要添加“可触摸”功能(如 UITapRecognizer),您必须将它们的 userInteractionEnabled 设置为 @ 987654325@.

因此,即使您为UIImageView (star1) 正确设置了此属性,由于您将其添加为ratingLabelBody 的子视图,您也无法触发您的UITapGestureRecognizer (imgTouchUp:)。
您必须对 star1 的父视图执行相同操作,即 ratingLabelBody

用代码翻译,你只需要这样做:

[ratingLabelBody setUserInteractionEnabled:YES];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 2021-08-22
    • 1970-01-01
    • 2015-01-04
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多