iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 如何清除手势识别器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
SO,我在叠加视图中添加手势识别器。当点击屏幕上我想要这个叠加层消失。不过,添加手势识别器会覆盖“向上触摸”和其他按钮点击事件。我需要这个背,因此我需要removegestorerecognizer。我可以使用这种方法,但我有一个问题。我的代码下面 –

- (void)HelpClicked
{
    CGRect visibleBounds = [self convertRect:[self bounds] toView:viewContainer];
    CGFloat minimumVisibleX = CGRectGetMinX(visibleBounds);
    UIImageView * HelpOverlay = [[UIImageView alloc]initWithFrame:CGRectMake(minimumVisibleX,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传递到这个方法,也不能删除它在一个方法。任何指针?当涉及到事件时,Ive被卡住了很多传递变量的问题。

解决方法

WWDC 2015,Cocoa Touch Best Practices,建议你保留一个属性或iVar,如果你需要访问它以后,不要使用viewWithTag:。

@H_942_5@moto:属性而不是标签

这可以避免一些麻烦:

>当处理多种手势时,您可以直接删除要访问该属性的手势,并删除它。 (不需要重复所有的视图的手势,以获得正确的一个删除)
>在迭代时,通过标签查找正确的手势,当您在视图上有多个标签时,以及当与特定标签发生冲突时,这是非常具有误导性的

声明iVar

@implementation YourController {
    UITapGestureRecognizer *tap;
}

设置您的视图

- (void) HelpClicked {
    //Your customization code

    //Adding tap gesture
    tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@SELEctor(dismissview)];
    [self addGestureRecognizer:tap];
}

直接删除手势

- (void) dismissview {
    [self.view removeGestureRecognizer:tap];
}

大佬总结

以上是大佬教程为你收集整理的iphone – 如何清除手势识别器全部内容,希望文章能够帮你解决iphone – 如何清除手势识别器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。