尝试添加 UITapGestureRecognizer 但不工作

Posted

技术标签:

【中文标题】尝试添加 UITapGestureRecognizer 但不工作【英文标题】:trying to add a UITapGestureRecognizer but not working 【发布时间】:2014-02-20 20:44:02 【问题描述】:

我尝试在 UILabel 上设置一个简单的 UITapGestureRecognizer,但它不起作用。似乎什么都没有被识别,也没有任何东西写入日志。

在从 viewDidLoad 调用的方法中

  UILabel *miTN = [[UILabel alloc] initWithFrame:CGRectMake(300, 100, 150, 15)];
  [miTN setUserInteractionEnabled:YES];
  UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized)];
  [miTN addGestureRecognizer: tapRecognizer];
  [miView addSubview:miTN];

   ... later

  - (void)tapRecognized:(id)sender
  
    NSLog(@"that tap was recognized");
  

此外,这是为了响应异步网络调用而调用的。这会导致问题吗?是否还有其他可能导致问题的问题?我不太确定调试的第一步是什么 - 我检查了颜色混合图层以查看它们是否重叠但似乎没有。

【问题讨论】:

miView 是什么类型的视图?你看到屏幕上的景色了吗?如果它是纵向的 iPhone,则它的原点从屏幕右侧水平对齐 20 像素。 这只是一个 UIView - 一个可能的问题是此代码存在于回调块中,但我认为它应该正确保留。标签在模拟器中写得很好。 是否添加了其他手势或任何父视图? 我不这么认为——我现在正在调查。我最初认为这只是我的一些愚蠢的语法错误,但现在认为这是某种意料之外的交互。 【参考方案1】:

您应该将 UIGestureRecognizerDelegate 添加到您的视图控制器类的协议列表中

@interface TSViewController : UIViewController <UIGestureRecognizerDelegate>

并插入字符串:

tapRecognizer.delegate = self;

替换

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized)];

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];

【讨论】:

你确定有必要吗? OP 没有使用任何委托方法。 你可以试试。我确定。 @sooper 关于委托,您可以阅读***.com/questions/11355671/… 当您为操作设置目标 (self) 时,它仍然可以在不设置委托和实现协议的情况下工作。阅读为解决您所链接的问题而发布的最后一条评论。【参考方案2】:

在 Swift 中,您必须按如下方式启用。 yourLabel.isUserInteractionEnabled = true

【讨论】:

以上是关于尝试添加 UITapGestureRecognizer 但不工作的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试在反应中添加添加搜索过滤器,但出现此错误

尝试添加两个向量,但添加顺序错误

尝试添加两个整数但向量错误

尝试将社交媒体链接添加到 Drupal 网站

尝试将私有密钥添加到 AWS Opsworks 时出错

尝试将项目添加到数据库时出现更新条目错误