多次点击UIButton触发目标函数多次

问题描述:

我有一个UIButton。我按如下方式绑定了一个目标。多次点击UIButton触发目标函数多次

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

当我多次点击我的按钮多次调用目标函数多次。 在攻丝按钮我提出了一个新的视图控制器。 当我点击3次快速,然后我的新视图控制器显示3次。

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

请帮忙吗?

首先它不是苹果的bug。它应该手动处理。所以,请按照下列步骤

首先让你的全球您的按钮的实例,然后做这个

.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; 
} 

带一个像“isItDone”这样的全局布尔标志或者它在singleton类中声明。

    在“myFunction的”
  1. 将其设置为假
  2. 你推在该类的“ViewDidAppear”方法设置为真实的函数视图控制器。

它会帮助你。 我有同样的问题,它是使用一个全局变量管理它的好方法。

我认为这会对你有所帮助。

更改您的通话功能,这样

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

,如果你想存储的选择调用你的函数类似这样的

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

柜面你回来视图控制器,然后只需要保存一个布尔标志来存储它是否点击一次。

+0

我的看法,但使用该代码的用户只能在点击链接的,我说得对还是我错过理解的东西吗? –

+0

没有哟对。根据我的回答,用户可以只点击一次按钮,如果你想让用户在任何情况下再次点击按钮,那么你可以通过检查来启用用户交互。 –

+0

确保你正在调用函数(myFunction :)不仅(myFunction) –

将IBOutlet中到您的按钮,在viewWillAppear方法中写入,

button.userInteractionEnabled = YES; 

,当你点击按钮设置,

button.userInteractionEnabled = NO; 
+0

你和我的答案有什么区别? –

+0

IBOutlet的需求是什么? –