Uma coisa que fazemos é colocar as telas que utilizam funcionalidade de teclado dentro de uma ScrollView para poder ter o rolamento para caso precise ver outros campos (poder descer a tela).
Gosto também de utilizar a lib que faz com que a ScrollView "desça" até o Input, confira um artigo de implementação.
Nossa implementação desse componente coringa, fica assim:
(lembrando que esse Keyboard funciona como uma ScrollView)
<KeyboardAwareScrollView
// espaço extra pra "empurrar" e fazer esse padding pra quando o teclado aparecer
extraHeight={Platform.OS === 'ios' ? 350 : 100}
// ativa o comportamento no Android
enableOnAndroid={true}
// quando o teclado eh fechado, ele volta pra posicao inicial
resetScrollToCoords={{ x: 0, y: 0 }}
// tempo de delay pra aparecer
keyboardOpeningTime={50}
// aqui é os estilos do container da View
contentContainerStyle={[
{
flexGrow: 1,
padding: SPACINGS.SCREEN_PADDING,
},
contentContainerStyle,
]}
// estilo da própria scrollview
style={[style, { padding: 10, paddingBottom: safeAreaInsets.bottom }]}
{...props}>
{children}
</KeyboardAwareScrollView>
Qualquer dúvida, fico disponível para trocar uma ideia no Linkedin (/fscheremetta).