ONTapGesture 不工作?
Posted
技术标签:
【中文标题】ONTapGesture 不工作?【英文标题】:UITapGesture not working? 【发布时间】: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 检查我的答案 【参考方案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;
【讨论】:
以上是关于ONTapGesture 不工作?的主要内容,如果未能解决你的问题,请参考以下文章
使用 SwiftUI List()、ForEach()、.onTapGesture WatchOS6 传递值的问题
onTapgesture 禁用 View SwiftUI 的按钮
如果它连接的 UIImageView 在 UIScrollView 下,是不是可以让 Tap Gesture Recognizer 工作?