У меня есть UIViewController с UITableView. Я использую NotificationCenter, чтобы установить y-координаты для представления, чтобы настроить, когда клавиатура показывает и снова скрывается. Для первого шоу + скрыть все выглядит хорошо. Во второй раз все портится на экране. Я включил операторы печати в действия show / hide, чтобы докопаться до сути - см. Ниже.
Это вывод консоли для одиночной итерации show / hide :
Optional(<UIView: 0x7fd6d6522d40; frame = (0 0; 375 758); autoresize = W+H; layer = <CALayer: 0x600000a900c0>>)
pre-show: 0.0
post-show: -278.0
Optional(<UIView: 0x7fd6d6522d40; frame = (0 -278; 375 758); autoresize = W+H; layer = <CALayer: 0x600000a900c0>>)
pre-show: -278.0
post-show: -614.0
pre-hide: -614.0
post-hide: 0.0
И это то, что показано после второй итерации :
Optional(<UIView: 0x7fd6d6522d40; frame = (0 0; 375 758); autoresize = W+H; layer = <CALayer: 0x600000a900c0>>)
pre-show: 0.0
post-show: -69.0
Optional(<UIView: 0x7fd6d6522d40; frame = (0 -69; 375 758); autoresize = W+H; layer = <CALayer: 0x600000a900c0>>)
pre-show: -69.0
post-show: -405.0
pre-hide: -405.0
post-hide: 0.0
Я не понимаю, почему 1) согласно выводу консоли, keyboardWillShow, кажется, также вызывается, когда клавиатура снова скользит вниз - так, дважды за один цикл вместо 1 x show и 1 x hide 2) post-show имеет другое значение во второй итерации - т.е. -69.0 вместо -278.0
Может кто-нибудь помочь мне понять, что здесь происходит не так?