因此,我正在为叠加视图添加手势识别器。当在屏幕上轻击时,我希望该叠加视图消失。但是,添加手势识别器会覆盖“touch up inside”和其他按钮点击事件。因此,我需要将其删除以恢复这些事件。我可以使用下面的方法,但我遇到了问题-
- (void)helpClicked
{
CGRect visibleBounds = [self convertRect:[self bounds] toView:viewContainer];
CGFloat minimumVisibleX = CGRectGetMinX(visibleBounds);
UIImageView * helpOverlay = [[UIImageView alloc]initWithFrame:CGRectMake(minimumVisibleX, 0, 1024, 768)];
UIImage * helpImage = [UIImage imageNamed:@"HelpOverLay.png"];
[helpOverlay setImage:helpImage];
helpOverlay.tag = 50;
self.scrollEnabled = NO;
[self addSubview:helpOverlay];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissView)];
[self addGestureRecognizer:tap];
在这里我正在将覆盖视图从另一个视图上移除。- (void) dismissView
{
UIView *overlay = [self viewWithTag:50];
[overlay removeFromSuperview];
self.scrollEnabled = YES;
}
我的问题是如何在第二个方法中删除手势识别器?我无法将变量“tap”传递到此方法中,也无法在之前的方法中删除它。有什么指针吗?当涉及到事件时,我一直被卡住了很多传递变量的问题。
tap
的引用(可能作为 ivar),这样你就可以安全地在需要时随时删除它。 - Rok Jarc