You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:20:20