Робота з клавіатурою
Під час роботи на мобільних пристроях (особливо це стосується iOS) можуть виникнути такі проблеми у поведінці клавіатури:
Клавіатура перекриває інпут і не видно введений текст.
Клавіатура не закривається при кліку поза її областю після завершення введення тексту.
Проемулюйте цей код на iOS та на Android (при інпуті у фокусі він перекривається клавіатурою і клавіатура не прибирається при натисканні на вільне поле). Або скопіюйте цей код собі в редактор.
Виправлення перекриття
Щоб розв'язати проблему перекриття інпуту клавіатурою потрібно використати компонент KeyboardAvoidingView. А саме - в нього огорнути наш TextInput.
Компонент KeyboardAvoidingView має проп behavior, який для iOS повинен бути padding і для Android повинен бути height.
Для визначення операційної системи використовують компонент Platform із ключем OS пристрою на якому відкрилася програма.
<KeyboardAvoidingView behavior={Platform.OS == "ios" ? "padding" : "height"}>
</KeyboardAvoidingView>
Виправлення закриття клавіатури
Все ще лишається проблема, що при натиску в будь-якому місці інтерфейсу поза інпутом клавіатура не зникає. Щоб це виправити потрібно скористатися компонентом TouchableWithoutFeedback. Цей компонент реагує на доторк до екрану. Він виступає обгорткою. У нього потрібно помістити увесь контейнер, щоб під час кліку в будь-якому місці контейнера клавіатура зникала. При цьому на подію onPress потрібно передати метод клавіатури dismiss.
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
</TouchableWithoutFeedback>
Посилання на документацію:
Last updated