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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

需求

现在需要实现一个功能当在微信小程序点击聚焦输入框时页面自动滚动使输入框显示在弹出的键盘上方避免被键盘遮挡。
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])这样类似的语句先定位到输入框所在的子组件

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

怎么在Node.js中查看数据类型 - web开发

本篇内容介绍了“怎么在Node.js中查看数据类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! Node.js是一个非常流行的JavaSc...

人工智能复试面试题总结

1.人工智能(Artificial Intelligence, AI) 1.1、人工智能是什么? 人工智能(Artificial Intelligence),英文缩写为AI。 人工智能是研究、开发用于模拟、延伸和扩展人的智能理论、方法...

yolov7目标检测:基于自定义数据集完成检测、训练、测试

文章目录 前言 一、环境与文件准备 1.1、环境配置 1.2、源码下载 1.3、权重文件下载 1.4、详解源码中的文件夹与文件 1.5、详解配置参数 二、检测模型(detect.py)...

Codeforces Round #121 (Div. 1) / 191A Dynasty Puzzles (dp&优化)

A. Dynasty Puzzles http://codeforces.com/problemset/problem/191/A time limit per test memory limit per test input...

GEE-Scholars 江淮平原水稻面积识别

沐风-GEE系列专栏 涵盖生态环境,卫星遥感,气候变化,云计算。 Google Earth Engine 系列学习笔记(一) Google Earth Engine 系列学习笔记(二) GEE-Scholars 可视化时间序列农业景观 GEE-Scholars 机器学习之卫星图像监督分...

Java

1.不可变不变的对象绝对是线程安全的,不需要线程同步,如String、Long、BigInteger2.无条件的线程安全对象自身做了 足够的内部同步,也不需要外部同步,如 Random 、ConcurrentHashMap、Concurrent集合、atomic3.有条件的线程安全对象的部分方法可以...