React Native это жопа кладбище, я просто не могу.
Короче, у меня на всю форму WebView. В отладке когда я нажимаю “Написать пост” под формой появляется клавиатура, которая изменяет высоту вебвью и пост писать удобно. В релизной версии клавиатура и верхний статус бар телефона рисуется поверх вебвью, because fuck you, that’s why. И это считается тут нормальным поведением! Ты никогда не можешь быть уверен, что каждый твой компонент будет себя одинаково вести во время разработки и пользователя на телефоне, потому что так тут принято!
Окей, мы можем положить вебвью в стандартный компонент KeyboardAvoidingView, это буквально область реагирующая на системную клавиатуру, как ясно из названия. Всё супер, но при скрытии клавиатуры компонент неправильно считает новую высоту и под вебвью навсегда остаётся белая полоса. Эта фигня считается самой распространённой проблемой React Native и с 2021 года они так и не придумали нормального решения, кроме пачки диких костылей.
https://github.com/facebook/react-native/issues/29614
Окей, заменим KeyboardAvoidingView на сторонний компонент KeyboardAwareScrollView, который создан буквально чтобы решить эту проблему. И он решает, белой полосы больше нет, но раньше мы добавили паддинг над вебвью, чтобы он не подлазил под статусбар системы и поэтому когда клавиатура показывается она ровно на высоту статус бара наезжает на зону ввода.
UPD.: Оказалось, это тоже не из-за паддинга сверху, а… известный баг компонента, который тянется с 2019 года!
https://stackoverflow.com/questions/63749722/keyboardawarescrollview-has-extra-bottom-padding
И вот эта сраная чехарда всё время. Это не нормальная работа, даже в Delphi и Visual Basic позиции компонентов считались правильно и надёжно, а не как попало. Задолбало так, что хочется ноутбук в окно выкинуть.
UPD.: Финальное решение нашлось вот тут: https://github.com/ConnectyCube/react-native-android-navbar-height
Приєднуйтесь до обговорення
6 коментарів
Читати коментарі