-1

我有一个 UIButton,我试图在其动作触发时禁用它。这没有效果:

[self.controlBTN setEnabled:NO];

只是为了避免不可避免的问题,self.controlBTN 确实指向有问题的按钮。我提供的证据是,如果我用此声明替换它:

[self.controlBTN setTitle:@"What?" forState:UIControlStateNormal];

标题改变。所以,我可以更改标题,但不能禁用该按钮。为什么?文档说 enabled 是一个属性,并没有提到它是只读的。

4

2 回答 2

4

[UIButton setEnabled:(BOOL)enabled]将毫无问题地工作。您要么以YES某种方式将其设置回,要么您可能正在重新分配按钮并将其作为旧按钮的子视图添加回(通过使用相同的框架)。

此类错误发生的频率比您想象的要多,尤其是当按钮位于UITableViewCell.

您尚未发布创建按钮的位置的代码,因此我最多可以为您提供一个推测性的答案。如果您发布更多代码,我也许可以为您提供更好的答案。

于 2013-07-18T23:32:42.613 回答
0

对不起,伙计们......我没有提到的是我试图在延迟后重新启用 UIButton,使用 dispatch_after()。不幸的是,这个声明:

dispatch_after(2*NSEC_PER_SEC,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{[sender setEnabled:YES];});

正在瞬间执行,所以看起来好像 setEnabled: 不起作用。

我现在更仔细地阅读了when参数的文档,将 2*NSEC_PER_SEC 替换为 dispatch_time(DISPATCH_TIME_NOW,2*NSEC_PER_SEC) 并且一切正常。

过失。

于 2013-07-18T23:43:47.027 回答