0

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
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 に答える