Мое приложение отслеживает изменения на клавиатуре для анимации определенных частей пользовательского интерфейса с помощью уведомлений UIKeyboardWillShow
и UIKeyboardWillHide
.UIKeyboardWillShow Уведомление из других приложений
Проблема, с которой я сталкиваюсь, заключается в том, что когда я переключаюсь с приложения «Сообщения» на клавиатуру, показанную в моем приложении, с помощью переключателя приложений (в состоянии, когда клавиатура не требуется), он вызывает уведомление UIKeyboardWillShow
, а затем UIKeyboardWillHide
уведомление, которое приводит к тому, что мой пользовательский интерфейс немного подпрыгивает.
Есть ли способ слушать только уведомления о клавиатуре для собственного приложения?
ViewWillAppear
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillChange:", name: UIKeyboardWillChangeFrameNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
ViewWillDisappear
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillChangeFrameNotification, object: nil)
Это не имеет ничего общего с тем, что вы просили, но вы хотели бы иметь в виду, что 'viewWillAppear' не обязательно означает, что ваша точка зрения действительно появится (я считаю это раздражает или даже массивную ошибку, но это факт жизни), а 'viewWillDisappear' не обязательно означает, что ваш взгляд действительно исчезнет. Таким образом, вам будет лучше перемещать эти методы в 'viewDid', что означает то, что он говорит. – matt
См. Мой ответ здесь http://stackoverflow.com/a/40031687/2774520 –