2017 Ответ
Вероятно, KeyboardAvoidingView
- лучший способ. Ознакомьтесь с документами здесь . Это действительно просто по сравнению с модулем Keyboard
, который дает разработчику больше возможностей для анимации. Спенсер Карли продемонстрировал все возможные способы в своем среднем блоге .
2015 Отвечать
Правильный способ сделать это в react-native
не требует внешних библиотек, использует собственный код и включает анимацию.
Сначала определите функцию, которая будет обрабатывать событие onFocus
для каждого TextInput
(или любого другого компонента, который вы хотели бы прокрутить):
// Scroll a component into view. Just pass the component ref string.
inputFocused (refName) {
setTimeout(() => {
let scrollResponder = this.refs.scrollView.getScrollResponder();
scrollResponder.scrollResponderScrollNativeHandleToKeyboard(
React.findNodeHandle(this.refs[refName]),
110, //additionalOffset
true
);
}, 50);
}
Затем в вашей функции рендеринга:
render () {
return (
)
}
Это использует RCTDeviceEventEmitter
для событий и размеров клавиатуры, измеряет положение компонента с помощью RCTUIManager.measureLayout
и вычисляет точное перемещение прокрутки, требуемое в scrollResponderInputMeasureAndScrollToKeyboard
.
Вы можете захотеть поиграть с параметром additionalOffset
, чтобы соответствовать потребностям вашего конкретного дизайна пользовательского интерфейса.