У меня странная проблема. У меня есть два NSTExtField , представляющих имя пользователя и пароль. Когда я получаю неправильную комбинацию имени пользователя и пароля, я устанавливаю переменную экземпляра, указав это в контроллере представления, содержащего эти два поля. Затем я использую наблюдение значения ключа для запуска следующего метода при изменении переменной экземпляра:
- (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]];
}
}
Это работает нормально, если поле не активно. Другими словами, если я изменю одно из полей, оставлю его в фокусе с курсором внутри и попытаюсь подтвердить подлинность (щелкнув по элементу меню), поле с фокусом не обновится до нового цвета фона, а поле без фокуса делает.
Чтобы посмотреть, смогу ли я заставить его обновиться, я добавил следующие строки в конец метода:
[passwordField drawCell:[passwordField cell]];
[usernameField drawCell:[usernameField cell]];
Все еще не повезло. У кого-нибудь есть идеи, что может быть причиной этого? Заранее спасибо!