Порядок действий в контроллере


#1

Затупил подскажите пож! Есть view высота которого динамическая(высчитывается во viewDidLoad ) и зависит она от того есть на экране клава или нет(height: self.view.frame.height - heightKeyboard)). viewDidLoad висит у меня обсервер который ждет появление клавы и после появление берет ее высоту и отдает ее в heightKeyboard(глобальная переменная) но у мя щяс по логам первым приходит heightKeyboard = 0 а потом уже то что поймал обсервер 266 и вот view уже проинициализирована с heightKeyboard = 0. Чет не соображу где я профукал, что она первой отдается.

Сайм файл контроллера
https://yadi.sk/d/YgVxflYc3NNE9M


#2

Сделай все через метод viewDidAppear. И тогда view поймёт про клавиатуру


#3

Во viewDidLoad не желательно делать какие-то вычисления связанные с размерами элементов, т.к. на этом этапе размеры еще не установлены.
Как предложил Илья, можно делать в методе viewDidAppear, но есть нюанс, пользователь может увидеть изменения размеров элементов, что не совсем красиво.
Лучший способ - это все делать через обсервер появления клавиатуры, когда клавиатура появится, в этот момент сделать все вычисления и поменять размеры.