Уведомление о срабатывании клавиатуры и уведомление о настройках по умолчанию - PullRequest
2 голосов
/ 20 августа 2011

У меня есть этот код в моем ViewController:

- (void) viewWillAppear :(BOOL)animated {
     // register for keyboard notifications
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) 
           name:UIKeyboardDidShowNotification object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) 
           name:UIKeyboardWillHideNotification object:self.view.window];

     // register for defaults change notification
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(defaultsChanged:)      
           name:NSUserDefaultsDidChangeNotification object:nil];
 }

 -(void) viewWillDisappear :(BOOL)animated {
     [[NSNotificationCenter defaultCenter] removeObserver:self];
 }

Проблема в том, что при появлении клавиатуры также вызывается метод defaultsChanged.

Когда появляется клавиатура, это последовательность звонков (извлечение из журнала):

start defaultsChanged 
end   defaultsChanged
start textFieldDidBeginEdit
end   textFieldDidBeginEdit
start keyboardWasShown
end   keyboardWasShown

Я не знаю, что может быть.У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 20 августа 2011

Возможно, значения по умолчанию действительно изменились как побочный эффект показанной клавиатуры? Почему бы вам не распечатать значения по умолчанию до и после и посмотреть, изменилось ли что-нибудь? Вот некоторый код для печати NSUserDefaults с NSLog:

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSDictionary* defaultsDict = [defaults dictionaryRepresentation];
NSLog(@"defaults = %@", defaultsDict);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...