私は奇妙な問題に遭遇しています。ユーザー名とパスワードを表す2 つのNSTextFieldがあります。間違ったユーザー名とパスワードの組み合わせを取得した場合、これら 2 つのフィールドを含むビューのコントローラーで、そのことを示すインスタンス変数を設定します。次に、インスタンス変数が変更されたときにキー値監視を使用して、次のメソッドを実行します。
- (void)handleCredentialsValidityToggle {
if ([self areCredentialsValid]) {
[passwordField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0]];
[usernameField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0]];
} else {
[passwordField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0
green:1.0
blue:0.35
alpha:1.0]];
[usernameField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0
green:1.0
blue:0.35
alpha:1.0]];
}
}
フィールドがアクティブでない限り、これは正常に機能します。つまり、フィールドの 1 つを変更し、カーソルを内側にしてフォーカスを維持し、(メニュー項目をクリックして) 認証しようとすると、フォーカスのあるフィールドは新しい背景色に更新されませんが、フォーカスのないフィールドは行いません。
強制的に更新できるかどうかを確認するために、メソッドの最後に次の行を追加しました。
[passwordField drawCell:[passwordField cell]];
[usernameField drawCell:[usernameField cell]];
まだ運がありません。これを引き起こしている可能性のあるアイデアはありますか?前もって感謝します!