多次点击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的”
- 将其设置为假
- 你推在该类的“ViewDidAppear”方法设置为真实的函数视图控制器。
它会帮助你。 我有同样的问题,它是使用一个全局变量管理它的好方法。
我认为这会对你有所帮助。
更改您的通话功能,这样
- (IBAction)myFunction:(id)sender
{
UIButton *button = (UIButton*)sender;
button.userInteractionEnabled = NO;
}
,如果你想存储的选择调用你的函数类似这样的
[button addTarget:self action:@selector(myFunction:)
forControlEvents:UIControlEventTouchUpInside];
柜面你回来视图控制器,然后只需要保存一个布尔标志来存储它是否点击一次。
将IBOutlet中到您的按钮,在viewWillAppear方法中写入,
button.userInteractionEnabled = YES;
,当你点击按钮设置,
button.userInteractionEnabled = NO;
你和我的答案有什么区别? –
IBOutlet的需求是什么? –
我的看法,但使用该代码的用户只能在点击链接的,我说得对还是我错过理解的东西吗? –
没有哟对。根据我的回答,用户可以只点击一次按钮,如果你想让用户在任何情况下再次点击按钮,那么你可以通过检查来启用用户交互。 –
确保你正在调用函数(myFunction :)不仅(myFunction) –