【问题标题】:UITapGesture not working?ONTapGesture 不工作?
【发布时间】:2016-10-26 07:44:24
【问题描述】:

代码:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(OpenBrandUrlLinkMetod:)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
FirstImgV.userInteractionEnabled = YES;
[FirstImgV addGestureRecognizer:singleTap];

-(void)OpenBrandUrlLinkMetod:(UITapGestureRecognizer *)recognizer
{
    NSLog(@"hello!!"); 
}

但未调用 OpenBrandUrlLinkMetod。

任何人都可以帮助我。

【问题讨论】:

  • 您是否尝试过将点击手势添加到非常明显的视图中?也许您的图像视图前面有一些东西(可能是一个面具?)或者由于某种原因无法访问?您可以在空白视图中尝试此操作以确保代码正常吗?看起来不错,但我想消除一些可能性:)
  • 在 UIScrollView 或 UiTableView 中添加 FirstImgV 的位置
  • 我在 UIView 上添加了 FirstImgV。
  • (UITapGestureRecognizer *)recognizer 您是否在超过 1 个标签或图像或任何内容中使用相同的方法?
  • @HariMohan 检查我的答案

标签: ios objective-c iphone uitapgesturerecognizer


【解决方案1】:

试试这个,

为您的UITapGestureRecognizer 设置委托,

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(OpenBrandUrlLinkMetod:)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
singleTap.delegate = self;  // set delegate to self
_img.userInteractionEnabled = YES;
[_img addGestureRecognizer:singleTap];

通过以下代码检查手势识别器是否正在调用您的UIImageview

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([[touch.view class] isEqual:[UIImageView class]]) {
        return YES;
    }else{
        return NO;
    }
}

然后使用你的 TapGesture 方法来做你的事情,

-(void)OpenBrandUrlLinkMetod:(UITapGestureRecognizer *)recognizer
{
    NSLog(@"hello!!");
}

【讨论】:

  • 请把正确答案标记出来,方便其他人使用。
【解决方案2】:

singleTap 可能在任何触摸事件发生之前被垃圾回收。
为防止这种情况,您必须将其保留在班级的某处:

@interface YourClass

/// Your gesture recognizer gets referenced/retained here:
@property (strong, nonatomic) UITapGestureRecognizer *singleTap;

@end

然后:(可能在 viewDidLoad 中)

_singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(OpenBrandUrlLinkMetod:)];
_singleTap.numberOfTapsRequired = 1;
_singleTap.numberOfTouchesRequired = 1;
FirstImgV.userInteractionEnabled = YES;
[FirstImgV addGestureRecognizer: _singleTap];

【讨论】:

    【解决方案3】:

    我将您的代码放入我的项目中,它完全可以运行,您可以在 VIDEO 中查看代码和视图控制器。

    我只是添加了这个委托<UIGestureRecognizerDelegate>

    只需添加此委托并尝试一下

    【讨论】:

    • 它是否有效?我还会向您发送带有特定点击手势代码的视频,如果它不起作用,请告诉我
    【解决方案4】:

    我认为您在相关视图控制器中还有其他手势识别器。在这种情况下,这段代码应该能让你继续前进。或者试试这段代码,然后设置委托。

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
        return YES;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      相关资源
      最近更新 更多