С очень простого куском коды ниже, у меня есть разница странного поведения между прошивкой 7 и 8 при вращении:UIKeyboardWillShowNotification срабатывает два раза на прошивке 8 и только один раз на прошивке 7 при вращении
- КСН 7 клавиатураWillShow и keyboardWillHide вызываются только один раз каждый.
- На iOS 8 клавиатураWillShow и keyboardWillHide вызывается по два раза каждый.
Я создал очень простой проект, чтобы гарантировать, что это не является побочным эффектом моего основного проекта, но это не так.
Является ли это документированной разницей в поведении?
С уважением. Sébastien.
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:self.view.window];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:self.view.window];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)keyboardWillShow:(NSNotification*)notification
{
NSLog(@"Keyboard will show.");
}
-(void)keyboardWillHide:(NSNotification*)notification
{
NSLog(@"Keyboard will hide.");
}
@end
Хотя это может быть внутренняя ошибка, вы должны стараться не заниматься реализацией системы клавиатуры, если уведомления являются логическими ('show' ->' hide' -> 'show' ->' hide', а не 'hide' ->' show' -> 'show' ->' hide'). Попробуйте проверить стек вызовов, чтобы увидеть логику публикации сообщения Apple. –
Поместите 'NSNotificationCenter' в' viewDidLoad' и попробуйте. – VRAwesome
Я согласен, но мое приложение должно работать на iOS 7 и iOS 8 (и 9), проблема в том, что часть кода работает правильно (когда устройство вращается) с уведомлением как одного, так и двух .... –