iOS下无法延迟调起键盘

289 阅读1分钟
<template>
    <div class="container">
        <div class="click-area" @click="setInputFoucs">点击区域</div>
        <input class="input-area" type="text" ref="input" :placeholder="'输入内容'">
    </div>
</template>

<script>
export default {
    data(){
        return {

        }
    },
    methods: {
        setInputFoucs(){
            this.$refs.input.foucs();
        }
    },
}
</script>

上述使input输入框聚焦的逻辑代码,在ios系统的浏览器中并不能生效

原因

ios存在安全策略限制
在某个UI事件(例如click, touchend等)的直接执行环境中调用focus能调起键盘;
注意这个直接环境,它的意思是如果你在setTimeout, promise等异步方式中执行了focus,依然是无效的。调不起键盘的!
ios上述限制是出于安全机制的考虑
ios上只有用户交互触发的focus事件才会起效,而延时回调的focus是不会触发的