【小程序】文本框聚焦时,弹出的键盘遮挡住文本框如何处理

这篇具有很好参考价值的文章主要介绍了【小程序】文本框聚焦时,弹出的键盘遮挡住文本框如何处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

现在需要实现一个功能,当在微信小程序点击聚焦输入框时,页面自动滚动,使输入框显示在弹出的键盘上方,避免被键盘遮挡。
iso的微信小程序自带这个优化,不需要额外处理。
安卓或其他系统的微信小程序需要这个处理。

实现方法

通过input的聚焦事件触发计算页面滚动达到效果,定位滚动位置的需求使用的参数scroll-top来实现

代码

<scroll-view
      :scroll-top="curScrollTop "
      scroll-y="true"
      @scroll="scroll"
      show-scrollbar
      :style="{ height: height }"
>
<input class="my-input" @focus="inputFocus"></input>
</scroll-view>
//页面滚动时记录滚动高度
scroll(e) {
  this.curScrollTop = e.detail.scrollTop;
},
//聚焦事件
inputFocus(e,index) {
      let _this = this;
      const query = wx.createSelectorQuery();//这里有坑,如果输入框在子组件里,需要使用uni.createSelectorQuery().in(this.$refs.fault.$refs.MyTextarea[index])这种方法来定位到其组件内的作用域
      query
        .select(".my-input")//通过类名获取输入框
        .boundingClientRect((data) => {
          console.log(_this.scrollTop);
          console.log("得到布局位置信息" + JSON.stringify(data));
          console.log("节点离页面顶部的距离为" + data.top);
          uni.getSystemInfo({
            success: function (res) {
              const platform = res.platform.toLowerCase();
              if (platform === "ios") {
                console.log("当前设备是iOS");
                //ios不做任何处理
              } else {
                console.log("当前设备不是iOS");
                if (data.top > 200) {
                //不是ios时处理滚动高度
                  _this.scrollTop = _this.curScrollTop + data.top - 200;
                }
              }
            },
          });
        })
        .exec();
    }

如果输入框位于子组件而非处理滚动事件的组件内, const query = wx.createSelectorQuery()的方法定义query将会找不到输入框元素;需要使用uni.createSelectorQuery().in(this. r e f s . f a u l t . refs.fault. refs.fault.refs.MyTextarea[index])这样类似的语句先定位到输入框所在的子组件文章来源地址https://www.toymoban.com/news/detail-764507.html

到了这里,关于【小程序】文本框聚焦时,弹出的键盘遮挡住文本框如何处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp小程序点击输入框时阻止弹出软键盘

    如果不需要监听输入框的话可以直接看解决方式3  本人如此 解决方式1:@click更换成@tap 但如果同时子元素是开关等  各需要各的功能的话  解决方式2: 使用微信官方api阻止键盘弹出  hideKeyboard() 解决方式3: 最简单暴力百分百不弹出的方法在此  设置disabled

    2024年02月12日
    浏览(65)
  • 微信小程序----键盘弹出挡住输入框问题解决方案

    微信小程序键盘弹出挡住输入框问题解决方案 问题:微信小程序聊天输入框点击后,键盘弹出挡住输入框 解决办法: 1、给输入框添加一个 bindkeyboardheightchange 事件,获取键盘的高度 2、给发送消息的盒子一个bottom bottom 为监听到的键盘的高度 效果图:

    2024年03月27日
    浏览(164)
  • iOS微信小程序键盘弹出时输入框被挡住

    1. 背景: 底部输入框采用fixed定位后,在iPhone13这种有底部安全区的手机上,键盘弹出时被遮挡,在安卓机上是正常的。 2. 查找问题: 看了网上的解决方案说设置“adjust-position”,试了一下没效果,本来现在这个属性也是默认为true的,看网上另一个解决方案就是判断键盘弹

    2024年02月12日
    浏览(57)
  • 微信小程序当在一个页面有多个input输入框,自动弹键盘,需要点击input框2次才能聚焦的问题

    微信小程序当在一个页面有多个input输入框,自动弹键盘,需要点击input框2次才能聚焦。 解决办法,在点击input框时,调用bindtap事件,关闭键盘、设置焦点。代码示例如下: 方法仅供参考!

    2024年02月11日
    浏览(43)
  • vue弹出的添加信息组件中 el-radio 单选框无法点击问题

    情景描述: 在弹出的添加信息的组件中的form中有一个单选框,单选框无法进行点击切换 原因如下: 单选框要求有个默认值,因为添加和更新操作复用同一个组件,所以我在初始化时对相关进行了判定,如果为空则赋初始值 结果这样虽然实现了初始值的展示,但是就是如此造成了单选

    2024年04月10日
    浏览(54)
  • 在访问一个网页时弹出的浏览器窗口,如何用selenium 网页自动化解决?

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而,很不幸,Alert类处理的结果就是没有结果,并不能够将这个弹出框关闭掉。 无法用处理alert的

    2024年02月10日
    浏览(50)
  • Android 13 WRITE_EXTERNAL_STORAGE , READ_EXTERNAL_STORAGE不弹出的问题

    在Android 13(API 33)之前,加入了如下代码 如果 compileSdk 设置 32 或者以下,那么就没什么问题。当设置33 或者以上,系统就会自动设置无权限。那在 33 及以上的怎么设置呢? 看下面的代码。 在xml中如下设置 动态获取权限的代码如下:

    2024年04月27日
    浏览(63)
  • h5键盘弹起遮挡输入框的处理

    一、前言: 混合开发中遇到一个问题,有些型号的安卓机和ios机型,输入框唤起键盘后,输入框会被键盘遮挡,需要手动滑动才能漏出来,影响用户体验 二、解决办法: 1.ios和android手机唤起的windows事件不一样,要分别处理 2.document.body.scrollTop无效,可以用document.documentElemen

    2024年02月15日
    浏览(48)
  • uni-app使用uView打开弹出层后输入框聚焦时placeholder错位问题

    这里就不放效果了,大概意思就是在使用uView的popus时,在底部弹出后,如果弹窗中的输入框会造成一瞬间的placeholder文字错位,这个问题的主要是因为uView安全区适配导致 uView相关文档 popus源码 它会自动判断在并且在IPhone X等机型的时候,给元素加上一个适当底部内边距,从

    2024年02月19日
    浏览(49)
  • uniapp input 被键盘遮挡的解决方案

    在uniapp登录页遇到了input被键盘遮挡的和一点击输入框(或两个输入框来回切换输入)页面就闪现刷新的问题。解决如下: 闪现/刷新:用uniapp自身的 input 标签,替换uview的 u-input ,用 @input 事件替换掉 v-model 属性 遮挡:增加三个标签属性 :always-embed=“true”:adjust-position=“tr

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包