longPress后,焦点input弹出键盘的问题
发布于 5 年前 作者 fang96 17959 次浏览 来自 问答

我有这样的一个需求,长按某个按钮后弹出自定义modal层,modal内有一个input,想要在弹出的同时focus到input上弹出键盘。

代码简化大致如下

<template>
  <view wx:if="{{needShow}}">
    <input type="text" focus placeholder='默认文字'/>
  </view>
  <view [@longpress](/user/longpress)='longpress' style="margin-top:100px;">
    长按我锁定
  </view>
  <view [@tap](/user/tap)='hide' style="margin-top:100px;">
      单击隐藏
    </view>
</template>
 
data = {
      needShow: false
    }
 
methods = {
      longpress() {
        console.log('长按')
        this.needShow = true;
      },
      hide() {
        this.needShow = false;
      }
    }

我碰到的问题是:

长按后input的确获得了焦点,但是当我的手抬起后,键盘收回(Android下必然如此,iOS抬起时间稍早则不会),而我不希望键盘因为抬起的操作被收回。

尝试过catch方法防止冒泡,在modal层加遮罩并且也catch所有方法防止击穿,但在我手未抬起之前,我任然可以操作modal层下方的页面,只有抬手后再次放下才能被catch到。

微信均为最新版本,iOS和Android下均有这样的问题。

望解答 感谢

回到顶部