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

iOS端native-base(v2)输入框弹出键盘时内容滚动隐藏、光标消失问题

问题根因

你代码中使用native-base的Content组件包裹Input,Content底层基于React Native的ScrollView实现,iOS端ScrollView内部的输入框聚焦时会触发默认滚动偏移逻辑,而你当前场景下Content没有滚动需求,反而导致已输入内容被滚动移出可视区,光标同步消失。Android端ScrollView默认无该自动偏移逻辑,因此运行正常。

解决方案

方案1(优先推荐):替换Content为普通View

你当前的Input布局为固定单行,完全不需要滚动容器,直接将InputField.js中的Content组件替换为普通View即可修复,修改后的核心代码如下:

// InputField.js 修改部分
<View
  style={{
    flexDirection: "row",
    alignItems: "center",
    flex: 1 // 补加flex:1占满剩余布局空间,避免输入框宽度异常
  }}
>
  <Input
    // 原有属性保持不变
    value={value}
    disabled={disabled}
    autoCompleteType={type.autoCompleteType}
    autoCorrect={type.autoCorrect}
    autoCapitalize={type.autoCapitalize}
    keyboardType={type.keyboardType}
    onChangeText={onChangeText}
    secureTextEntry={type.secureTextEntry}
    maxLength={type.maxLength}
    placeholder={placeholder}
  />
</View>

方案2(如果必须保留Content组件):禁用Content滚动

如果有特殊逻辑必须保留Content组件,直接给Content添加scrollEnabled={false}属性即可禁用默认滚动偏移逻辑:

<Content
  scrollEnabled={false}
  contentContainerStyle={{
    flexDirection: "row",
    alignItems: "center",
  }}
>

可选兜底优化

如果修改后仍有偶发光标丢失问题,可给Input添加selection属性手动控制光标位置:

<Input
  // 原有属性不变
  selection={{
    start: value?.length || 0,
    end: value?.length || 0
  }}
/>

以上方案均不会影响Android端原有运行逻辑,修改后可直接验证iOS端效果。

内容的提问来源于stack exchange,提问作者henskjold73

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:08