暂时停止UIButton响应

时间:2011-11-09 18:45:23

标签: iphone objective-c ios uibutton

我的应用程序中有一个按钮,它调用一个我们不希望同时多次调用的长异步函数。然而,当我开始捣碎按钮时,它总是发送与点击一样多的消息。我希望在函数运行时停止响应按钮。我当前有一个标志,当该函数在另一个线程中处于活动状态时停止执行该函数,并且该按钮一旦进入该函数就被设置为隐藏,但这些没有任何效果。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

在处理触摸事件的方法中,您可以禁用按钮:

- (void)handleTouch:(id)sender {
   // Do your asynchronous call
   [sender setEnabled:NO];
}

答案 1 :(得分:1)

假设:

  1. 您的按钮有一个IBOutlet引用。
  2. 按钮上有IBAction。
  3. 然后您只需将按钮的Enabled属性设置为NO,并在收到ASYNC任务的通知时重新启用它。

    -(IBAction) buttonClicked {
        [myButton setEnabled:NO];
        //Do stuff
    }
    
    -(void) notificationHandlerMethodForAsyncTaskDone:(NSNotification *)notification {
        [myButton setEnabled:YES];
        //Do stuff
    }
    

答案 2 :(得分:1)

而不是考虑禁用按钮,为什么不使屏幕无效。显示一些消息,例如“Processing ...”或Spinner。这样,用户就会知道正在发生的事情。同时你的问题也解决了。

DSActivityView为此a good library

答案 3 :(得分:0)

您可以使用enabled属性关闭按钮:

[myButton setEnabled:NO]

Documentation