UIButton setEnabled无法正常工作

时间:2012-10-13 13:42:53

标签: ios uibutton ios6 uicontrol

在viewDidLoad中,我检查两个UITextField是否有有效输入(文本长度> 0)然后我设置了UIButton的enabled属性。使用调试器我想出了

self.loginButton.enabled = YES;
执行

,但是当我用

打印布尔值时
print self.loginButton.enabled

我之前得到NO(没关系)但是在执行语句后也没有。我还多次检查过self的UIButton属性是否通过IBOutlet连接到我的故事板中的UIButton,情况就是这样。我也可以用控制台打印titleLabel的文本。当我点击其中一个UITextFields并更改文本

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
正在调用

,我将再次检查文本。这里

self.loginButton.enabled = YES;

似乎正常工作。使用iOS 5我没有任何问题,但我没有在此问题的文档中找到iOS 6的任何相关更改。

有什么想法吗?

编辑:问题有所不同。我在UIViewController中也有一个UITableView,并且tableView比那时预期的要大(然后在Storyboard中设置得更大)(直到知道我不知道为什么)并且似乎覆盖了UIButton。在执行

之前更改UIButton或UITableView的框架
self.loginButton.enabled = YES;

的工作原理。设置enabled属性时可能会有延迟,因为打印布尔值仍为NO。

NSLog(@"%i",self.loginButton.isEnabled);
self.loginButton.enabled = YES;
NSLog(@"%i",self.loginButton.isEnabled);

2012-10-13 16:11:43.460 [1524:c07] 1
2012-10-13 16:11:43.462 [1524:c07] 1

2 个答案:

答案 0 :(得分:1)

你在self.loginButton.enabled = YES;进行initWithNibName:吗?可能在执行此操作时,self.loginButton未从xib初始化,这可以解释为什么它在shouldChangeCharactersInRange中有效。尝试打印self.loginButton以查看是否属于这种情况。

答案 1 :(得分:0)

问题是UITableView正在从故事板中声明的初始大小调整大小,因为它是自动调整大小,然后它覆盖了UIButton区域。按钮命中被解释为与UITableView的交互。更改UIButton框架,UITableView框架或自动调整设置可以解决问题。