【问题标题】:UITapGestureRecognizer not working with UIButtonUITapGestureRecognizer 不适用于 UIButton
【发布时间】:2013-03-07 10:49:56
【问题描述】:
UITapGestureRecognizer *PressRecognizer1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)];
        [PressRecognizer1 setNumberOfTouchesRequired:1];
         [firstBtn addGestureRecognizer:PressRecognizer1];

-(void)handlePress:(UITapGestureRecognizer*)PressRecognizer {

    NSLog(@"working");
      if (PressRecognizer.state == UIGestureRecognizerStateBegan) {
          UIButton *whichButton=(UIButton *)[PressRecognizer view];
          NSLog(@"whichButton %d\n",whichButton.tag);
          if (whichButton.tag == 0) {
              NSLog(@"currentImageId1 %d",currentImageId1);
              [delegate imageZoom:currentImageId1];
          }

我用 customcell 创建了一个UITabelView,每行有三个图像。点击图像时调用hadlePress 方法。但是如果条件,我不会先进入。

【问题讨论】:

  • @rckoenes 你在哪里编辑了我的代码?
  • “UITapgesture 无法处理图像” - 代码中的图像在哪里?
  • 我在按钮上添加了图片。
  • 也许你可以设置一个断点来看看你的手势识别器的状态是什么
  • 我在日志工作后设置了断点。它给了我 exc_bad_access 错误

标签: ios objective-c uibutton uitapgesturerecognizer


【解决方案1】:

来自苹果文档:

虽然点击是离散的手势,但对于手势识别器的每个状态,它们都是离散的;因此,相关的动作消息在手势开始时发送,并针对每个中间状态发送,直到(包括)手势的结束状态。因此,处理点击手势的代码应该测试手势的状态,例如:

- (void)handleTap:(UITapGestureRecognizer *)sender {
     if (sender.state == UIGestureRecognizerStateEnded)     
     {         
          // handling code     
     } 
}

如果您在方法中使用 NSLog(@"%d",sender.state)(在 if 语句之前),您将看到该方法仅在 UIGestureRecognizerStateEnded 状态下被触发,因此您应该更改您的

if (PressRecognizer.state == UIGestureRecognizerStateBegan)

if (PressRecognizer.state == UIGestureRecognizerStateEnded)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2012-09-24
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多