0

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

self.loginButton.enabled = YES;

被执行,但是当我打印布尔值时

print self.loginButton.enabled

我之前得到 NO(这没关系),但在执行语句之后也得到 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;

作品。设置启用属性时可能会有延迟,因为打印布尔值仍然返回 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
4

2 回答 2

1

你在做self.loginButton.enabled = YES;initWithNibName:?当您执行此操作时,可能self.loginButton不会从 xib 初始化,这可以解释为什么它在shouldChangeCharactersInRange. 尝试打印self.loginButton以查看是否是这种情况。

于 2012-10-13T13:57:23.097 回答
0

问题是 UITableView 正在从情节提要中声明的初始大小调整大小,因为自动调整大小,然后它覆盖了 UIButton 区域。并且按钮点击被解释为与 UITableView 的交互。更改 UIButton 框架、UITableView 框架或自动调整大小设置可以解决问题。

于 2012-10-13T14:31:40.140 回答