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

Modal嵌套TextInput首次点击键盘收回及光标异常问题求助

解决Modal内TextInput首次点击键盘收回、光标位置异常的问题

问题根源

Modal的渲染生命周期和普通页面组件不同,首次加载时Modal还未完成布局就触发了TextInput的焦点请求,导致键盘弹出后立即失去焦点;光标位置不稳定则是因为Modal渲染时布局未完全稳定,TextInput的对齐样式未生效。

修复方案

  1. 确保Modal完全挂载后再渲染TextInput
    利用Modal的onShow回调,延迟渲染TextInput或者设置其可聚焦状态,避免布局未完成时触发焦点:

    const [modalReady, setModalReady] = useState(false);
    
    <Modal
      animationType="fade"
      visible={modalVisible}
      onShow={() => setTimeout(() => setModalReady(true), 100)}
    >
      {modalReady && (
        <TextInput
          keyboardType="phone-pad"
          placeholder={i18n.t('PhoneNumber')}
          style={styles.modalTextPhoneNo}
          onChangeText={(text) => setshareToPhone(text)}
          autoFocus={false}
        />
      )}
    </Modal>
    
  2. 强制TextInput的光标对齐样式
    给TextInput添加textAlignVertical="center"属性,同时确保textAlign固定为center,避免布局抖动影响光标:

    <TextInput
      keyboardType="phone-pad"
      placeholder={i18n.t('PhoneNumber')}
      style={styles.modalTextPhoneNo}
      onChangeText={(text) => setshareToPhone(text)}
      textAlignVertical="center"
    />
    

    若仍有问题,可给TextInput外层套一个固定高度的容器,稳定布局结构。

  3. 禁用Modal硬件加速(针对部分设备)
    部分设备的硬件加速会导致Modal内输入组件焦点异常,尝试添加hardwareAccelerated={false}:

    <Modal
      visible={modalVisible}
      hardwareAccelerated={false}
    >
      {/* TextInput代码 */}
    </Modal>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:10:34