首页
学习
活动
专区
圈层
工具
发布

移动端那些戳中你痛点的软键盘问题及解决方法

大厂技术 坚持周更 精选好文 问题 问题描述: 在ios手机中,当页面中包含有输入框时,点击输入框,键盘弹起,会让页面中被fixed的元素失效。所以造成了底部吸底和顶部吸顶的元素错位的问题。...在 Android 上,监听 webview 高度会变化,高度变小获知软键盘弹起,否则软键盘收起。 // IOS 键盘弹起:当输入框被聚焦时IOS键盘会被弹起 inputRef?....所以解决办法就是让键盘弹起时,添加吸底按钮以及底部元素的margin-bottom为header的高度就行。...2、吸底元素(也就是按钮)能够在键盘弹出之后,出现在键盘的上方 对于这个问题,因为安卓表现是webview缩小,所以在安卓上并不存在这个问题,对于ios,因为ios向上滚动的距离最大是键盘的高度,但是也有可能滚动距离不是键盘高度...解决办法: 当键盘收起时,加入下面其中一种办法就可以解决 滚动到顶部 window.scrollTo(0,0) 滚动到底部 window.scrollTo(0, Math.max(document.body.clientHeight

9.9K30

微信小程序解决ios页面上推问题

相信大家写原生小程序都遇到过一个问题,当输入框聚焦键盘弹起时,页面会自动上推,使得输入框刚好位于键盘之上,在安卓中推动的只是内容,但在ios中,推动的是整个页面,导致导航栏被推出屏幕外,如下:图片针对这个问题...键盘弹起后,获取到键盘的高度C,用显示区域B减去键盘区域C就是我们可使用的区域D获取输入栏底部距离显示区域的坐标,如E/H若输入栏底部坐标小于可使用区域D,如H,则说明当键盘弹起时,该输入栏不会被键盘遮挡...,不需要推动反之,若大于D,如E,则说明键盘弹起时,输入栏会被键盘遮挡,这个时候就需要页面上推至输入栏完全展示出来针对4,将E减去D,得到一个差值F,这就是当前元素距离完全展示还需要滚动的距离页面实际滚动距离应该为...或者失焦键盘落下事件未监听到解决:配合bindblur或者bindconfirm,将keyboardHeight设为0// 监听页面软键盘弹起手动推动页面scrollToInput(keyboardHeight...会默认保留全部小数,我们都知道,js在计算的时候会存在精度问题,有可能会滚动错误解决:获取到元素坐标后,最好只保留两位小数,计算时注意处理精度3、问题:当页面同时有input和textarea时,若只给

6.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    鸿蒙开发:如何解决软键盘弹出后的间距

    前言本文基于Api13近日在查看github中的issue时,发现了一个问题,说的是当自定义弹窗中有TextInput组件时,触摸焦点弹起软键盘后,组件和软键盘之间有一个间距,看到问题后,“我就在想,自定义弹窗...方式一:设置页面避让模式当我们不设置虚拟键盘的避让模式时,默认是OFFSET模式,也就是上抬模式,就会出现间距的问题,我们可以改为压缩模式RESIZE。...方法二:设置沉浸式布局设置沉浸式布局时,布局不会避让状态栏与导航栏,组件可能产生与其重叠的情况,这种情况下需要自己设置距离顶部和底部的距离。...虽然说解决了间距问题,但是,沉浸式之后,由于不会避让状态栏与导航栏,会出现底部的组件被遮挡的情况,也就是如下图所示:这种情况下,如果你想实现软键盘弹出后无间距,软键盘收起后,组件在底部导航栏上面,那么就需要代码上的动态设置...px2vp(44) : this.bottomRectHeight })方式三、动态设置位置所谓的动态设置,就是根据软键盘的高度,动态设置组件的位置,也就是需要获取软键盘的高度,当软键盘弹起时

    24500

    Android 底部按钮被软键盘顶起问题解决

    一般来说,我们的布局分为两种 底部按钮被滚动布局包裹 底部按钮不被滚动布局包裹 第一种布局是不会出现软键盘把底部按钮顶起的情况,首先软键盘的打开实际上是一个 Dialog,而我们在配置文件内的 adjustResize...属性是在页面的根布局 decorView 的子 view 也就是一个线性布局内通过设置 paddingBottom = 软键盘高度,这样其实相当于把整个滚动布局的高度减少了,所以底部的按钮也只是变为需要滚动才能看到...第二种情况通常为一个继续按钮始终处于页面的底部,中间的内容可以滚动,当根布局的内边距等于软键盘高度时,底部按钮就看起来像是被顶起。...从大的方向来说可以通过修改 windowSoftInputMode 来设置布局对软键盘的处理方式,当然也可以通过监听软键盘,这种修改的细粒度更小。...bottomView.visibility = View.VISIBLE } } } } 2、修改 windowSoftInputMode adjustPan 如果设置了这个属性,当软键盘弹出的时候

    2.6K20

    鸿蒙NEXT版仿微信聊天App的避让软键盘

    下面详细介绍如何在聊天界面有效避让输入法的软键盘。 一、软键盘为什么需要避让 点击App界面的编辑框,界面底部会自动弹出输入法的软键盘,这个软键盘占据了整个屏幕的三分之一空间。...比如下面的聊天界面,正常在页面顶部显示聊天标题栏,在页面底部显示聊天交互控件(包括编辑框、按钮等等)。 此时点击页面底部的编辑框,输入法的软键盘会从屏幕下方弹出,然后把整个聊天界面顶了起来。...可见被顶起的聊天界面出现了两处错乱: 1、页面顶部的标题栏被顶飞了,不晓得在跟谁聊天了; 2、编辑框下方的发送按钮被软键盘遮住了,导致输完聊天文字后不能直接点击发送,得先关闭软键盘才能点击发送按钮,使得交互体验不够友好...该操作对应调用expandSafeArea方法,当方法参数为SafeAreaType.KEYBOARD时,表示对软键盘而言属于安全区域。...那么可对页面窗口增加设置,让软键盘在弹出时只压缩包含layoutWeight属性的组件,不压缩正常高度的组件。

    61010

    【H5】209-可能这些是你想要的H5软键盘兼容方案

    IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域时,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域时,输入框失去焦点,软键盘收起。...但是,触发键盘上的收起按钮键盘时,输入框并不会失去焦点,同样软键盘收起。 ? ?...当输入框位于页面下部位置时,在 IOS 上,会将 webview 整体往上滚一段距离,使得该获取焦点的输入框自动处于可视区,而在 Android 则不会这样,它只会改变页面高度,而不会去滚动到当前焦点元素到可视区...微信官方已给出解决方案,只需在软键盘收起后,将页面(webview)滚回到窗口最底部位置(clientHeight位置)。 console.log('IOS 键盘收起啦!')...在 UC 浏览器上,软键盘弹起后,浏览器上面的标题栏高度就有个高度变小延时动态效果,这样导致 webview 往下滚了一点,底部输入框滚到了非可视区。

    4.3K12

    解决Android软键盘在全屏下设置adjustResize无效的问题

    输入法遮挡问题 解决输入法遮挡的问题 基本上有两种 adjustResize + ScrollView adjustPan adjustPan会把页面整体上推 adjustResize则是缩放可调整页面...所以要和ScrollView配合 但是如果界面设成全屏模式就不会生效 解决方式 在非全屏模式(即状态栏不透明)下,将activity的windowSoftInputMode的属性设置为:adjustResize...在键盘显示时它未将Activity的Screen向上推动,所以你Activity的view的根树的尺寸是没有变化的。 在这种情况下,你也就无法得知键盘的尺寸,对根view的作相应的推移。...int usableHeightPrevious; private FrameLayout.LayoutParams frameLayoutParams; //为适应华为小米等手机键盘上方出现黑条或不适配...setContentView放进去的View mChildOfContent = content.getChildAt(0); //3、给Activity的xml布局设置View树监听,当布局有变化

    7.4K32

    可能这些是你想要的H5软键盘兼容方案

    IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域时,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域时,输入框失去焦点,软键盘收起。...但是,触发键盘上的收起按钮键盘时,输入框并不会失去焦点,同样软键盘收起。 ?...当输入框位于页面下部位置时,在 IOS 上,会将 webview 整体往上滚一段距离,使得该获取焦点的输入框自动处于可视区,而在 Android 则不会这样,它只会改变页面高度,而不会去滚动到当前焦点元素到可视区...微信官方已给出解决方案,只需在软键盘收起后,将页面(webview)滚回到窗口最底部位置(clientHeight位置)。...在 UC 浏览器上,软键盘弹起后,浏览器上面的标题栏高度就有个高度变小延时动态效果,这样导致 webview 往下滚了一点,底部输入框滚到了非可视区。

    8.5K20

    安卓ios兼容问题及处理(小程序H5)

    微信小程序中new Date()转换时间时间格式时IOS不兼容的问题 问题:然后利用new Date() 转换时间戳时,使用微信开发工具、安卓都没问题,ios中无法展示并报错 “invalid date...安卓/IOS图片卡顿异形 问题 :安卓上图片会出现卡顿,变形,然后才会显示正常的图片大小 原因: image组件默认宽度300px、高度225px 解决办法: 使用image 标签,尽量固定宽高。...键盘弹出异常 问题: ios上键盘弹出会将页面往上顶 安卓显示正常 原因: ios上的软键盘会使页面的fixed定位失效。...解决办法: 可以监听resize事件(浏览器窗口大小调整时触发),当键盘弹出的时候,更改页面的position属性值。...let myFunction let isIos = true if (isIos) { // 既是微信浏览器 又是ios============(因为查到只有在微信环境下,ios手机上才会出现input

    8.3K71

    鸿蒙开发:一文了解软键盘相关

    HarmonyOs NEXT DevEco Studio:Build Version: 5.0.3.900 API:12 modelVersion:5.0.0 前段时间,简单写了备忘录小应用,有一个小功能,那就是,底部的一排样式编辑按钮...,在键盘未弹出时,就在页面底部展示,当键盘弹起时,就悬浮在软键盘之上,方便在内容编辑时进行样式修改,就如下图红框中的编辑按钮。...实现上面的效果,其实也很简单,无非就是监听软键盘的高度,根据软键盘的高度来动态设置底部组件的高度即可。...inputMethod.getController().stopInputSession() 二、主动获取焦点弹出软件盘 如果你想要一进入某一个页面,或者弹出弹窗时进行自动的弹出软件盘,可以给可输入组件...this.getUIContext().getFocusController().requestFocus('id') 四、软件盘的避让机制 避让,是为了不让输入框被软键盘遮挡,其实系统默认就提供了输入框避让软键盘的能力

    25311

    Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

    最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText。...adjustPan是把整个界面向上平移,使输入框露出,不会改变界面的布局; adjustResize则是重新计算弹出软键盘之后的界面大小,相当于是用更少的界面区域去显示内容,输入框一般自然也就在内了。...幸好,开发者的智慧是无穷的,这个坑出现了这么多年,还是有人找到了一些解决方案的。...3.界面变化之后,获取"可用高度" 当软键盘弹出了之后,接下来的事情是获取改变之后的界面的可用高度(可以被开发者用以显示内容的高度)。...(获取软键盘高度的方法也出现了) 这时,就有: 全屏模式下,可用高度 = rect.bottom 非全屏模式,可用高度 = rect.bottom - rect.top 4.最后一步,重设高度 我们计算出的可用高度

    5.4K20

    如何处理手势冲突 | 手势导航连载 (三)

    出现这种重叠的常见的例子: 非模态的底部弹出菜单,因为这种菜单常常会在屏幕底部折叠为一个较小的视图,而且还需要滑动操作。 屏幕底部的水平页面切换,例如软键盘里选择不同表情包的 UI。...,将进度条向上推到手势区域之外。...就像这样: △ 进度条向上移动后不再出现冲突 为了实现这一点,我们需要使用 API 29 和 Jetpack Core 库 v1.2.0 (当前为 alpha 版) 中提供的新系统交互热区 API。...因此,除了直接修改视图的边距,我们还可以修改布局,以避免出现空间浪费: △ 将进度条移到视图的顶部 在这里,我们将进度条移到了播放控件的顶部,完全移出了手势交互区域。...出现这种冲突时,我们就可以使用上面提到的手势区域排除 API 来解决。 手势区域排除 API 通常会在两个地方被调用: 当视图被布局时 (onLayout),或是当视图被绘制时 (onDraw)。

    5.7K30

    自适应软键盘的Dialog以及监听软键盘弹起

    Dialog的布局要适应软键盘的弹起2. 软键盘弹起和收下的时候都会有不同的引导,所以要在Dialog上监听软键盘的弹起。 需求的解决: 一:适应键盘的弹起。...,主要是对软键盘操作的,主要有以下属性: stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 stateUnchanged:当这个activity出现时...,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示 stateHidden:用户选择activity时,软键盘总是被隐藏 stateAlwaysHidden:当该Activity主窗口获取焦点时...,软键盘也总是被隐藏的 stateVisible:软键盘通常是可见的 stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态 adjustUnspecified:默认设置...在Android Studio中我们可以点击这个接口定义左边的向上箭头查看接口的实现类,我们发现,dialog也实现了这个接口,那么回到第一个需求,解决方法就简单多了,只需要自定义一个Dialog,然后重写

    3.9K30

    手机软键盘弹起导致页面变形的一种解决方案

    最近用 uniapp(一种第三方 app 开发框架) 开发 app,其中一个页面有十几个 input 输入框,在点击 input 输入时,软键盘弹起,导致页面往上顶,底部的按钮也全部弹到页面上面去了,布局全被打乱...原来的样子: image.png 软键盘弹出来后: ? 在开发APP时,通常情况下页面的宽度和高度都会设为 100%,即页面高度等于屏幕高度,页面宽度等于屏幕宽度。...当 input 获取焦点时,软键盘弹出,页面高度被挤压,此时页面高度 = 屏幕高度 - 软键盘高度。所以,页面高度缩小,元素都挤压在一起,布局被打乱。...举例: 我开发的 APP 运行在 ipad上,横屏显示时,高度为 768px ,我可以把 768px 当做页面的最小高度。...等输入完,软键盘收起时,页面恢复原状。 ipad 的问题解决了,要是 APP 运行在其他手机端上呢?此时,CSS3 @media 属性就排上用场了。

    2.9K40

    AndroidMainifest标签说明2——<activity>

    它不会留在任务的活动堆栈,因此用户将无法返回。 android:parentActivityName 逻辑父类的名字。 系统读取这个属性,以确定哪些活动时应開始使用按下button在操作栏。...“splitActionBarWhenNarrow”加入栏位于屏幕的底部。在动作条显示操作项,当约束的水平空间。而不是少数出如今屏幕上方操作栏中的行动项目。操作栏被分成顶部导航部分和操作项的底部栏。...这保证了空间的合理量可供不仅为行动项目,同一时候也为在顶部导航和标题元素。 菜单项不会在两个栏分裂;他们总是一起出现。 android:windowSoftInputMode 窗体软键盘模式。...“stateUnchanged” 软键盘上一次保存在不论什么状态,是否可见或隐藏,当活动走到前台。 “stateHidden” 软键盘是隐藏的,当用户选择activity时。...“stateVisible” 可见的,当activity激活的时候 “stateAlwaysVisible” 总是可见的 “adjustUnspecified” 未指定活动的主窗体的大小是否为软键盘

    2K00

    微信 H5 页面兼容性解决方案

    出现原因分析:通常我们习惯用height属性设置行间的高度和line-height属性设置行间的距离(行高),当点击输入的时候,光标的高度就自动和父盒子的高度一样了。...(谷歌浏览器的设计原则,还有一种可能就是当没有内容的时候光标的高度等于input的line-height的值,当有内容时,光标从input的顶端到文字的底部 解决办法:高度height和行高line-height...、页面缺失 问题详情描述:在ios端,上下滑动页面时,如果页面高度超出了一屏,就会出现明显的卡顿,页面有部分内容显示不全的情况,例如下图,右图是正常页面,边是ios上下滑动后,卡顿导致如左图下面部分丢失...3、ios键盘唤起,键盘收起以后页面不归位 问题详情描述: 输入内容,软键盘弹出,页面内容整体上移,但是键盘收起,页面内容不下滑 出现原因分析: 固定定位的元素 在元素内 input 框聚焦的时候 弹出的软键盘占位...点击进来是正常,如果二次分享,则跳转到首页;使用vue router跳转到第二个页面后在分享时,分享设置失败;以上安卓分享都是正常 ?

    3.7K30

    【H5】344- 微信 H5 页面兼容性解决方案

    出现原因分析:通常我们习惯用height属性设置行间的高度和line-height属性设置行间的距离(行高),当点击输入的时候,光标的高度就自动和父盒子的高度一样了。...(谷歌浏览器的设计原则,还有一种可能就是当没有内容的时候光标的高度等于input的line-height的值,当有内容时,光标从input的顶端到文字的底部 解决办法:高度height和行高line-height...、页面缺失 问题详情描述:在ios端,上下滑动页面时,如果页面高度超出了一屏,就会出现明显的卡顿,页面有部分内容显示不全的情况,例如下图,右图是正常页面,边是ios上下滑动后,卡顿导致如左图下面部分丢失...3、ios键盘唤起,键盘收起以后页面不归位 问题详情描述: 输入内容,软键盘弹出,页面内容整体上移,但是键盘收起,页面内容不下滑 出现原因分析: 固定定位的元素 在元素内 input 框聚焦的时候...弹出的软键盘占位 失去焦点的时候软键盘消失 但是还是占位的 导致input框不能再次输入 在失去焦点的时候给一个事件 解决办法: <div class

    3.1K30
    领券