React-Native:editable={false}时能否滚动多行TextInput?
问题描述
我有一个包含多行TextInput字段的表单,代码如下:
<TextInput multiline={true} editable={false} numberOfLines={5} />
当表单审核通过后,所有字段均不可编辑,但此时多行TextInput无法滚动,用户难以查看完整文本。请问是否有办法在editable={false}时实现多行TextInput的滚动?
解决方案
有三种实用方法可以解决这个问题:
方法一:用非编辑配置替代
editable={false}
保留editable={true},同时设置selectTextOnFocus={false}和pointerEvents="none",既禁止用户编辑操作,又能保留TextInput的滚动功能:<TextInput multiline={true} editable={true} selectTextOnFocus={false} pointerEvents="none" numberOfLines={5} />方法二:改用ScrollView包裹Text组件展示内容
如果不需要保留TextInput的样式,可以把不可编辑的内容放到ScrollView中的Text组件内,天然支持滚动:<ScrollView style={{height: 120}}> <Text>{你的文本内容}</Text> </ScrollView>方法三:强制开启滚动并处理触摸事件
保持editable={false},手动设置scrollEnabled={true}并添加空的触摸事件回调,也能激活滚动(此方式相对繁琐,优先推荐前两种):<TextInput multiline={true} editable={false} numberOfLines={5} scrollEnabled={true} onTouchStart={() => {}} />
内容的提问来源于stack exchange,提问作者ThinkAndCode
相关产品推荐
相关产品推荐

