scrollview не может прокручивать, когда фокус textinput реагирует на нативный
У меня есть TextInput внутри ScrollView.
Прокрутка не работает, когда TextInput находится в фокусе. Эта проблема касается только Android.
6 ответов
Установка
<ScrollView keyboardShouldPersistTaps="always"
в сочетании с компонентом textInout ниже (пользовательский компонент, который я создал для ввода текста для решения этой проблемы) решил мою проблему:
<TouchableOpacity
activeOpacity={1}
onPress={()=>this.input.focus()}>
<View pointerEvents="none"
<TextInput
ref = {(input) => this.input = input}
/>
</View>
</TouchableOpacity>
В scrollView используйте keyboardShouldPersistTaps
<ScrollView keyboardShouldPersistTaps="handled">
это решит вашу проблему
проверьте документы здесь https://facebook.github.io/react-native/docs/scrollview.html
Это ожидаемое поведение.
Для получения дополнительной информации Официальная документация TextInput
Возможно, вы захотите попробовать что-то вроде этого: response-native-aware-scroll-view
Я использую простой трюк, и он работает для меня правильно. Следует добавить это
prop
в
TextInput
:
<TextInput
multiline={true}
numberOfLines={1}
/>
Это очень хороший пример: http://blog.arjun.io/react-native/mobile/cross-platform/2016/04/01/handling-the-keyboard-in-react-native.html
Для меня было очень важно добавить:
андроид:windowSoftInputMode="adjustResize"
в AndroidManifest.xml, чтобы сфокусировать textInput
Я обрабатываю по-разному для каждой платформы (в iOS фокуса на inputText достаточно, не забудьте поставить this.scrollViewRef
ссылка внутри ScrollView
которые обертывают inputText и помещают ref index в inputText
if (Platform.OS == 'android') {
this.inputRefs[field].measure((w, h, px, py, xPage, yPage) => {
this.scrollViewRef.scrollTo({ x: 0, y: yPage, animated: true })
this.inputRefs[field].focus()
})
}
this.inputRefs[field].focus()