解决uniapp H5端 监听键盘的弹出,收起 执行其他操作

这篇具有很好参考价值的文章主要介绍了解决uniapp H5端 监听键盘的弹出,收起 执行其他操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新建monitorKeyboard.js文件

         /**
 * @class 监听虚拟键盘
 * @classdesc 监听虚拟键盘弹出隐藏
 * @public onEnd 结束监听虚拟键盘
 * @public onShow 传递一个回调 监听虚拟键盘弹出
 * @public onHidden 传递一个回调 监听虚拟键盘隐藏
 */
 class MonitorKeyboard {
    constructor() {
      this.type = this.IsIA();
      this.originalHeight = window.innerHeight;
    }
   
    /**
     *  @function IsIA 获取设备类型
     *  @param  1 Android 2 iOS  
     */
    IsIA = () => {
      const userAgent = typeof window === 'object' ? window.navigator.userAgent : '';
      if (/android/i.test(userAgent)) {
        return 1; 
      } else if (/iPhone|iPod|iPad/i.test(userAgent)) {
        return 2; 
      }
    }
  
    // Android系统
    onResize = () => {
      //键盘弹起与隐藏都会引起窗口的高度发生变化
      const resizeHeight = window.innerHeight;
  
      if (this.originalHeight - resizeHeight > 50) {
        this.show('Android系统: 软键盘弹出');
      } else {
        this.hidden('Android系统: 软键盘收起');
      }
    }
  
    // iOS获取焦点
    onFocusin = () => {
      this.show('iOS系统:软键盘弹出');
    }
   
    // iOS失去焦点
    onFocusout = () => {
      this.hidden('iOS系统:软键盘收起');
    }
  
    /**  
     * @function onStart 开始监听虚拟键盘  
     */
    onStart = () => {
      if (this.type == 1) {
        // 获取窗口的高度
        window.addEventListener('resize', this.onResize);
      }
      if (this.type == 2) {
        // iOS系统
        window.addEventListener('focusin', this.onFocusin);
        window.addEventListener('focusout', this.onFocusout);
      }
    }
   
    /** 
     * @function onEnd 结束监听虚拟键盘  
     */
    onEnd = () => {
      if (this.type == 1) {
        //获取窗口的高度
        window.removeEventListener('resize', this.onResize);
      }
      if (this.type == 2) {
        window.removeEventListener('focusin', this.onFocusin);
        window.removeEventListener('focusout', this.onFocusout);
      }
    }
   
    /**
     * @function  onShow 传递一个回调函数
     * @param  虚拟键盘弹出时触发
     */
    onShow = (fn) => {
      this.show = fn;
    }
     
    /**
      * @function  onHidden 传递一个回调函数
      * @param  虚拟键盘隐藏时触发
      */
    onHidden = (fn) => {
      this.hidden = fn;
    }
  }
   
  export default MonitorKeyboard
  

在用到的vue页面写

    import monitorKeyboard from '@/utils/monitorKeyboard.js'


mounted() {
	   this.getKeyboardState();
   },

methods: {
	  getKeyboardState(){
          this.monitorKeyboard = new monitorKeyboard();
          this.monitorKeyboard.onStart();

          // 监听虚拟键盘弹出事件
          this.monitorKeyboard.onShow(() => {  
              console.log('键盘弹出')
          })

          //监听键盘收起的事件
          this.monitorKeyboard.onHidden(() => {
            // console.log('键盘收起')
            // 执行的其他操作
		    if(this.scenic){
		    this.showBut = false
		    }
          })
      }
   },
beforeDestroy(){
    this.monitorKeyboard.onEnd();
  },

文章来源地址https://www.toymoban.com/news/detail-534547.html

到了这里,关于解决uniapp H5端 监听键盘的弹出,收起 执行其他操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • H5: div与textarea输入框的交互(聚焦、失去焦点、键盘收起)

    本文是基于 VUE3+TS 的代码说明。 记录自己遇到的 div 与 textarea 输入框交互的聚焦、失去焦点、键盘收起、表情插入不失去焦点的需求实现。 1.固定在页面底部; 2.默认显示纯文字与发送图标按钮,文字超出的省略显示; 3.点击文字后,显示文本输入框、表情、半透明遮罩层,

    2024年02月12日
    浏览(43)
  • uniapp多行文本展开或收起(兼容h5、微信小程序,其它未测试)

    文本过短时隐藏按钮,需要知道文本全部展示的行数 文本收起时,微信小程序不能直接获取文本展示的高度 文本展示时,微信小程序不能直接获取文本收起的高度 所以使用 占位文本 获取单行文本高度,最终通过计算得到文本全部展示时的行数 本文介绍的方法兼容h5、微信

    2024年02月02日
    浏览(40)
  • UE4中对移动端键盘弹出/监听的处理

    背景:现有UE4的EditableText控件实现了输入文本并发送的基本功能。但是,点击输入框才可以弹出系统键盘,如果需要达到比如微信朋友圈的功能,比如自定义时机弹出,或对键盘弹出时监听等操作,则还需要一定的改造。可以发散思路,对可任意编辑文本框的控件进行改造,

    2024年02月10日
    浏览(38)
  • H5 防止安卓手机软键盘弹出挤压页面导致变形的方法

    在做移动端h5页面时,安卓端软键盘会导致页面压缩变形的问题:(安卓端有问题,IOS端没问题) 安卓端:安卓中,如果将footer元素设置为position:fixed或absolute,因为软键盘会改变页面的高度(将页面顶上来),因此footer元素也跟着移动上来,导致页面变形; IOS端:苹果的软

    2024年02月13日
    浏览(45)
  • 聊天uniapp 微信小程序以及安卓app键盘弹出会把底部fixed定位的textarea输入框覆盖掉的解决方法

    采用此方法解决 将pages.json文件在指定的页面中加入以下配置 “softinputMode”: “adjustResize” 具体代码如下,将container的高度设置为100vh 注意: 虽然加了100vh后,但是聊天窗口底部还是会被遮挡,这怎么办那?办法就是:把内框view设置成95vh,小于100vh就行。

    2024年02月05日
    浏览(59)
  • 【uniapp 监听键盘弹起与收回】

    在uniapp中,可以通过使用小程序提供的API来监听键盘弹起与收回。 首先,在页面的onLoad函数中注册监听事件: 然后,在页面的onUnload函数中取消注册监听事件: 接着,在页面中定义onKeyboardHeightChange函数,用于处理键盘弹起和收回事件: 通过上述代码,就可以实现在uniapp中监

    2024年02月11日
    浏览(34)
  • uniapp小程序点击输入框时阻止弹出软键盘

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

    2024年02月12日
    浏览(59)
  • 【uniapp】 软键盘弹出后fixed定位被顶上去问题

    当手机设计的导航栏为fixed定位上去时,输入框获取焦点就会把顶部自定义的导航栏顶到上面去,如下图所示 输入框设置 :adjust-position=“false” 当输入框获取焦点时获取到软键盘的高度,方法为inputBindFocus 失去焦点时的 方法 然后把fiexTop给弹窗的最外层加上padding就好了 亲测

    2024年02月13日
    浏览(50)
  • uniapp监听扫码枪键盘事件|无输入框式监听

    一般的扫码枪通过USB或蓝牙连接手机或电脑,充当的是一个外接设备。当扫码后,扫码枪会自动识别内容,然后向连接的电脑或手机发送键盘事件keydown或keyup。 input输入框式 如果页面上有input输入框就很简单,直接聚焦input,然后扫码,input框会自动填充内容,并自动产生回车

    2024年02月11日
    浏览(40)
  • uniapp app安卓 键盘监听(无input)

    如图: 要实现点击asdfhjkl任意键唤起答题说明弹窗,弹窗唤起的情况下点击enter键关闭弹窗,无弹窗的情况下点击enter键直接开始挑战   事件说明链接:HTML5+ API Reference

    2024年02月12日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包