我的应用程序中有一个按钮,它调用一个我们不希望同时多次调用的长异步函数。然而,当我开始捣碎按钮时,它总是发送与点击一样多的消息。我希望在函数运行时停止响应按钮。我当前有一个标志,当该函数在另一个线程中处于活动状态时停止执行该函数,并且该按钮一旦进入该函数就被设置为隐藏,但这些没有任何效果。
感谢您的帮助!
答案 0 :(得分:1)
在处理触摸事件的方法中,您可以禁用按钮:
- (void)handleTouch:(id)sender {
// Do your asynchronous call
[sender setEnabled:NO];
}
答案 1 :(得分:1)
假设:
然后您只需将按钮的Enabled属性设置为NO,并在收到ASYNC任务的通知时重新启用它。
-(IBAction) buttonClicked {
[myButton setEnabled:NO];
//Do stuff
}
-(void) notificationHandlerMethodForAsyncTaskDone:(NSNotification *)notification {
[myButton setEnabled:YES];
//Do stuff
}
答案 2 :(得分:1)
而不是考虑禁用按钮,为什么不使屏幕无效。显示一些消息,例如“Processing ...”或Spinner。这样,用户就会知道正在发生的事情。同时你的问题也解决了。
答案 3 :(得分:0)