多次点击 UIButton 多次触发 Target 函数
Multiple clicks on UIButton trigger Target function multiple times
我有一个 UIButton。我绑定了一个目标如下
[button addTarget:self action:@selector(myFunction)
forControlEvents:UIControlEventTouchUpInside];
当我快速多次单击我的按钮时,它会多次调用目标函数。
在点击按钮上,我展示了一个新的视图控制器。
当我快速单击 3 次时,我的新视图控制器将显示 3 次。
这是愚蠢的事情。一旦视图已转移到新的视图控制器,再次触发该功能有什么意义。为什么地狱苹果会做出如此愚蠢的事情?
有什么帮助吗?
取一个全局 bool 标志,如 "isItDone" 或它在单例中声明 class。
- 在"myFunction"中设置为假
- 您在那个 class 的 "ViewDidAppear" 方法设置为 true 的那个函数上推送哪个视图控制器。
它会帮助你。
我有同样的问题,使用一个全局变量来管理它是一个很好的解决方案。
我想这会对你有所帮助。
像这样更改您的调用函数
- (IBAction)myFunction:(id)sender
{
UIButton *button = (UIButton*)sender;
button.userInteractionEnabled = NO;
}
并像这样调用你的函数
[button addTarget:self action:@selector(myFunction:)
forControlEvents:UIControlEventTouchUpInside];
如果您想在返回视图控制器时存储选择,那么您只需要保留一个布尔标志来存储它是否被单击一次。
首先,它不是 apple 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;
}
将 IBOutlet 设置为您的按钮,在 viewWillAppear 方法中写入,
button.userInteractionEnabled = YES;
当您点击按钮组时,
button.userInteractionEnabled = NO;
我有一个 UIButton。我绑定了一个目标如下
[button addTarget:self action:@selector(myFunction)
forControlEvents:UIControlEventTouchUpInside];
当我快速多次单击我的按钮时,它会多次调用目标函数。 在点击按钮上,我展示了一个新的视图控制器。 当我快速单击 3 次时,我的新视图控制器将显示 3 次。
这是愚蠢的事情。一旦视图已转移到新的视图控制器,再次触发该功能有什么意义。为什么地狱苹果会做出如此愚蠢的事情?
有什么帮助吗?
取一个全局 bool 标志,如 "isItDone" 或它在单例中声明 class。
- 在"myFunction"中设置为假
- 您在那个 class 的 "ViewDidAppear" 方法设置为 true 的那个函数上推送哪个视图控制器。
它会帮助你。 我有同样的问题,使用一个全局变量来管理它是一个很好的解决方案。
我想这会对你有所帮助。
像这样更改您的调用函数
- (IBAction)myFunction:(id)sender
{
UIButton *button = (UIButton*)sender;
button.userInteractionEnabled = NO;
}
并像这样调用你的函数
[button addTarget:self action:@selector(myFunction:)
forControlEvents:UIControlEventTouchUpInside];
如果您想在返回视图控制器时存储选择,那么您只需要保留一个布尔标志来存储它是否被单击一次。
首先,它不是 apple 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;
}
将 IBOutlet 设置为您的按钮,在 viewWillAppear 方法中写入,
button.userInteractionEnabled = YES;
当您点击按钮组时,
button.userInteractionEnabled = NO;