多次点击UIButton会多次触发Target功能

时间:2015-06-22 05:11:22

标签: ios iphone uibutton actionmethod uicontrolevents

我有一个UIButton。我按如下方式绑定目标。

[button addTarget:self action:@selector(myFunction) 
                forControlEvents:UIControlEventTouchUpInside];

当我快速多次单击我的按钮时,它会多次调用目标函数。 在点击按钮上,我提供了一个新的视图控制器。 当我快速点击3次时,我的新视图控制器会显示3次。

这是愚蠢的事。一旦将视图移动到新的View控制器,重新触发该功能的重点是什么。为什么地狱苹果会做这样愚蠢的事情?

请帮忙吗?

4 个答案:

答案 0 :(得分:3)

首先,它不是苹果虫。它应该手动处理。请按照以下步骤进行操作

首先制作按钮的全局实例然后执行此操作

.h文件

@property (weak, nonatomic) IBOutlet UIButton *btn;

.m文件

- (IBAction)myFunction:(id)sender
{
    self.btn.userInteractionEnabled = NO;
}

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.btn.userInteractionEnabled = YES;
}

答案 1 :(得分:2)

采取一个全球bool旗帜,如" isItDone"或者它以单件类声明。

  1. in" myFunction"将其设为假
  2. 您在该类中推送该功能的View控制器" ViewDidAppear"方法设置为true。
  3. 它会帮助你。 我有同样的问题,使用一个全局变量管理它是一个很好的解决方案。

答案 2 :(得分:1)

我认为这会对你有帮助。

像这样更改您的通话功能

- (IBAction)myFunction:(id)sender
{
    UIButton *button = (UIButton*)sender;
    button.userInteractionEnabled = NO;
}

并像这样调用你的函数

[button addTarget:self action:@selector(myFunction:) 
            forControlEvents:UIControlEventTouchUpInside];

如果你想要存储选择而你回到视图控制器那么只需要保存一个布尔标志,如果它被点击一次就会存储。

答案 3 :(得分:1)

在viewWillAppear方法写入

中将IBOutlet设置为您的按钮
button.userInteractionEnabled = YES;

当您点击按钮设置时,

button.userInteractionEnabled = NO;