首页 > 其他分享 >【HarmonyOS】键盘遮挡输入框时,实现输入框显示在键盘上方

【HarmonyOS】键盘遮挡输入框时,实现输入框显示在键盘上方

时间:2023-08-01 10:45:03浏览次数:27  
标签:HarmonyOS height 键盘 输入框 window input data 页面

​【关键字】

harmonyOS、键盘遮挡input,键盘高度监听

 

【写在前面】

在使用API6、API7开发HarmonyOS应用时,常出现页面中需要输入input,但是若input位置在页面下方,在input获取焦点的时候,会出现软键盘挡住input情况,对于这个问题,这里介绍如何在input获取焦点时,将input显示在键盘上方功能,键盘收起时,将input回归到原位,即如下效果:

cke_515.pngcke_781.png

 

【页面布局】

首先我们编写一个简单的页面,这里直接将页面input设置在页面底部,代码如下:

// index.html
<div class="container">
    <input onfocus="foucs" value="{{inputVal}}" placeholder="请输入内容"
           style="position: absolute;bottom: {{keyboardHeight}}px;"></input>
</div>

 

【页面样式】

简单给input设置宽高,代码如下:

.container {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
}

input {
    width: 100%;
    height: 40px;
    border-radius: 10px;
}

 

【页面逻辑】        

当input获取焦点时,通过 @ohos.window 相关接口监听键盘高度变化,从而改变input位置,代码如下:

import window from '@ohos.window'

export default {
    data: {
        keyboardHeight: 0,
    },
    onInit() {

    },
    foucs() {
        console.info("foucs");
        let windowClass = null;
        window.getTopWindow((err, data) => {
            if (err) {
                console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err));
                return;
            }
            windowClass = data;
            console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));
            try {
                // 开启键盘高度变化的监听
                windowClass.on("keyboardHeightChange", (data) => {
                    console.info('Succeeded in enabling the listener for keyboard height changes. Data: ' + JSON.stringify(data));
                    let height = data.height;

                    // 键盘弹起时设置input高度
                    if (this.keyboardHeight != height) {
                        this.keyboardHeight = height % 3.8;
                        console.info("keyboardHeightChange keyboardHeight:" + this.keyboardHeight)
                    }
                })
            } catch (exception) {
                console.error('Failed to enable the listener for keyboard height changes. Cause: ' + JSON.stringify(exception));
            }
        })
    },
}

这样就实现输入框显示在键盘上方效果了

 

【参考文档】

https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-window-0000001477981397-V3#ZH-CN_TOPIC_0000001573929313__%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97

标签:HarmonyOS,height,键盘,输入框,window,input,data,页面
From: https://www.cnblogs.com/mayism123/p/17595850.html

相关文章

  • elementui 输入框限制输入内容
    输入框限制输入内容为正整数可以使用el-input-number标签记得加上严格step-strictly属性,step为1这样就不会有小数出来了<el-input-numberv-model="num":step="1"step-strictly:min='1'></el-input-number>或者也可以自定义方法 input事件上进行实时修改,这样的可扩展性就更......
  • OpenHarmony/HarmonyOS路由跳转并传值
    OpenHarmony/HarmonyOS路由跳转并传值作者:坚果团队:坚果派公众号:“大前端之旅”润开鸿技术专家,华为HDE,InfoQ签约作者,OpenHarmony布道师,擅长HarmonyOS应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领100+队员完成Pr的提交合入。欢迎通过主页或......
  • ArkTS语言OpenHarmony/HarmonyOS项目代码规范
    ArkTS语言OpenHarmony/HarmonyOS项目代码规范作者:坚果团队:坚果派公众号:“大前端之旅”润开鸿技术专家,华为HDE,InfoQ签约作者,OpenHarmony布道师,擅长HarmonyOS应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领100+队员完成Pr的提交合入。欢迎通过主......
  • vue使用directives V-指令限制输入框内容
    在一些表单中输入框需要前端加入限制,比如需要用户输入的是非负数的整数,这时候我们可以使用v-指令只要在input里加上就行。不需要一个个的去校验,省去的校验的代码<el-input-numberv-model="typeModel.jyCheckNum"clearableplaceholder="请输入不合格数"size="small"v-ente......
  • C编程练习-五子棋升级版(键盘的上下左右键控制落子)
    #include<stdio.h>#include<stdbool.h>#include<stdlib.h>#include<getch.h>charboard[15][15];//棋盘charrole='@';//角色charkey_x,key_y;//下子坐标//初始化棋盘voidinit_board(void){for(inti=0;i<15;i++){for......
  • 【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题
    ​【关键字】HarmonyOS、ArkTS、组件内转场动画、颜色异常 【问题描述】根据组件内转场动画文档中示例编写代码,使用动画转场组件button,并给button设置背景色让button透明度为0,实现动画转场时,会先出现默认蓝色button,然后动画再消失,问题代码如下所示:@Stateflag:boolean=t......
  • 【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题
    【关键字】HarmonyOS、ArkTS、组件内转场动画、颜色异常【问题描述】根据组件内转场动画文档中示例编写代码,使用动画转场组件button,并给button设置背景色让button透明度为0,实现动画转场时,会先出现默认蓝色button,然后动画再消失,问题代码如下所示:@Stateflag:boolean=true;@State......
  • HDC.Together2023 HarmonyOS学生公开课议程抢先看!
     未来已来,见证相遇万众瞩目的HarmonyOS学生公开课于8月6日9:30正式起航关注HarmonyOS生态前景聚焦HarmonyOS新技术畅谈HarmonyOS未来把握时代发展机遇,让我们同心而行和HarmonyOS一起创造无限可能   ......
  • 关于AJAZZ机械键盘的一些备忘录
    使用说明按键作用Fn+Ins调节灯光模式(整体明暗)(常亮)Fn+上下方向键灯光亮暗Fn+Del滚动灯光Fn+Home按的按键会亮并向两边扩散/按下的按键会亮Fn+PgUp/PgDn灯光动效Fn+End灯光亮灭性状Fn++/-控制流速度......
  • 超强阵容!HarmonyOS极客马拉松2023专家评审团来袭!
     数十位重量级专家现身决赛现场,为参赛者提供多角度专业点评。12支队伍,46位选手,齐聚东莞·松山湖,围绕HarmonyOS技术特性,共同挑战36小时极限编程,谁将问鼎决赛之巅,8.3日-5日,我们拭目以待! ......