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

React Native:Webview中输入框失焦时如何保持键盘不收起?

解决输入框切换焦点时键盘收起的问题

要保持键盘在输入框切换焦点时不收起,核心是避免先让当前输入框失焦,直接将焦点切换到目标输入框,同时确保WebView的配置允许JS主动触发焦点。

修改后的代码

export default function Test() {
    const viewHTML = `
        <html>
            <body>
                <script>
                    function test1() {
                        // 直接切换焦点到test2,不要先blur test1
                        document.getElementById("test2").focus();
                    }
                </script>
                <input id="test1" oninput="test1()" style="height:60px"/>
                <input id="test2" style="height:60px"/>
            </body>
        </html>
    `;
    return (
        <View>
            <WebView
                style={{width:370, height:600}}
                hideKeyboardAccessoryView={true}
                keyboardDisplayRequiresUserAction={false}
                javaScriptEnabled={true}
                source={{ html: viewHTML}}
            />
        </View>
    );
};

关键说明

  • 不要手动调用blur():当你主动调用当前输入框的blur()时,系统会认为所有输入元素都失去焦点,从而收起键盘。直接调用目标输入框的focus(),系统会自动转移焦点并保持键盘打开。
  • 保留keyboardDisplayRequiresUserAction={false}:这个配置是React Native WebView允许JS代码主动触发输入框焦点的关键,必须开启。
  • 若切换时机有问题(比如输入太快导致焦点没跟上),可以给focus()添加微小延迟,比如:
    setTimeout(() => {
        document.getElementById("test2").focus();
    }, 50);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:01:04