viewDidLoad では、2 つの UITextField に有効な入力 (テキストの長さ > 0) があるかどうかを確認し、UIButton の有効なプロパティを設定します。デバッガーを使用して、私はそれを理解しました
self.loginButton.enabled = YES;
実行されますが、ブール値を出力すると
print self.loginButton.enabled
前に NO を取得しますが (これは問題ありません)、ステートメントの実行後にも NO を取得します。また、self の UIButton プロパティが IBOutlet を使用してストーリーボードの UIButton に接続されているかどうかを何度も確認しました。コンソールで titleLabel のテキストを出力することもできます。UITextFields の 1 つをタップしてテキストを変更すると
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
が呼び出されているので、もう一度テキストを確認します。ここ
self.loginButton.enabled = YES;
正常に動作しているようです。iOS 5 では問題はありませんが、この問題に関するドキュメントに iOS 6 に関連する変更は見つかりませんでした。
何か案は?
編集:問題は別のものです。また、そのUIViewControllerにUITableViewがあり、その時点でtableViewが予想よりも大きく(ストーリーボードに設定されているよりも大きく)(理由がわからないまで)、UIButtonをオーバーライドしているようです。実行前に UIButton または UITableView のフレームを変更する
self.loginButton.enabled = YES;
動作します。のブール値を出力しても NO が返されるため、enabled プロパティの設定時に遅延が発生する可能性があります。
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