移动端input输入居底部所引起的问题及解决方法

刚工作不久,第一次接到要让input输入框居底部的页面的时候,最初的想法是用fixed方式,但在手机上明显的出现了问题。之后公司里面的带我的前辈发给了我这篇文章“Web移动端fixed布局的解决方案”。由于页面中并不需要文章中讲到的布局,参考文章中提供的思路:”由于fixed在软键盘唤起后会失效,导致页面可以滚动时,会跟随页面一起滚动。因此如果页面无法滚动,那么fixed元素即使失效,也不会滚动”,结合自己页面中顶部区域的高度是缩放的情况,选择使用js在页面初始化时动态的计算设置显示评论的区域高度,这样就可以刚好把input区域挤到底部,在安卓和大部分苹果机型上面获取焦点时就可以正常的弹起。在测试的苹果机型中有5c,5,6,6+(公司目前测试大都是借同事的手机测的,就这些机型),5c和越狱过的6出现了问题:第一次输入顶不起来。后来发现唤起输入法后整个页面是可以上下滑动的,既然可以滑动,就在input获取焦点时让页面整体的滑动到底部。添加了获取焦点事件后在5c和越狱6上面在第一次时就可以正常的顶起来了。本以为可以愉快的记录下这次的经验,事实证明还是自己太天真了!

如果只是单纯的测试获取焦点是否可以正常的被顶起,测试多少次都没有什么问题,但输入内容的不同就不一样了,这次问题是5c上面。在第一次输入纯英文并且不清除内容的情况下,隐藏软键盘,然后进行第二次获取焦点,它就顶不起来,顶不起来,顶不起来。重要的事情要说三遍。想来想去还是到网上溜达溜达吧!然后发现了知乎里面也有人问了input居底部顶起的问题,看了下面的回答,有一位同学回答说软键盘弹起是要时间的(忘记链接了),感觉突然脑内一闪:延时滑动到底部。给滑动到底部设置了500的延时,5c上就好了,其它的机型也是好的。虽然解决了问题,但原因还是不太了解。现在时不时的还是会想起这个问题。

时间: 2024-10-28 14:49:52

移动端input输入居底部所引起的问题及解决方法的相关文章

UIlabel居上对齐遇到的问题和解决方法以及其他相关资料

UILabel的text的对其方式有四种类型 NSTextAlignmentLeft; NSTextAlignmentCenter; NSTextAlignmentRight; 基本够用 但是今天遇到个问题 就是当我label很高字体很小的时候 默认的label文字永远是默认在中间  上图 [myLabel sizeToFit];首先试了这个方法 但是发现改变大小适应这个属性 会让文字在左上角并且label的height也随之缩小 添加numberToLine=0可以在换行的时候改变高度 其实这

移动端 input输入实时监听查询数据渲染

目前有一个需求,用户每输入内容就查找相应的 效果图 遇到的问题 1:每输入一个字母就进行查找,后台压力太大,重复渲染 解决:加入setTimeout   确保输入一定内容后在进行查询渲染 ,注意清除延迟 var time; $('#bname').keyup(function () { time=setTimeout(function () { $.ajax({ url: "/sign", type: "post", data: {bname: $("#b

input框自动填充内容背景颜色为黄色解决方法

谷歌浏览器input自动填充内容,背景色会是黄色,想改的话: input:-webkit-autofill { box-shadow: 0 0 0px 1000px white inset;} 这种方法没有了黄色背景,但是一点击input框还是会变为黄色 input:-webkit-autofill { box-shadow: 0 0 0px 1000px white inset !important;} 这种点击框也不会出现黄色了 还有一种就是关闭自动填充autocomplete="off&q

JavaSwing输入对话框,点击取消抛出异常的解决方法

在做产品管理系统的时候,遇到一个问题: 在得到一个输入框对话框的时候 String textPrice = JOptionPane.showInputDialog("请输入要调整的价格增(减)量"); 如果此时点击取消,则会抛出异常:java.lang.NullPointerException. 原因:点击取消不会产生String对象. 解决方法: 1 double price = 0; 2 String textPrice = JOptionPane 3 .showInputDial

Ubuntu VNC 打开spyder无法输入(检测不到键盘配置)解决方法

在ubuntu中安装好spyder后, 打开spyder发现无法输入. 在打开spyder的终端窗口,有如下提示: QXcbConnection: Failed to initialize XRandr Qt: XKEYBOARD extension not present on the X server. Qt: Could not determine keyboard configuration data from X server, will use hard-coded keymap c

Navicat for MySql 输入中文字符,提示1366错误的解决方法

若表格已经保存了默认的字符集,无法输入中文字符 此时,选中该表,设计表,选择要输入中文字符的列,修改其"字符集"和"排序规则"为截图所示,即可! 其他方式的错误,可参考 https://blog.csdn.net/ZhouSanduo18/article/details/47905419 这个写的很全面 原文地址:https://www.cnblogs.com/sky-x2017/p/mysql1.html

EditText键盘弹出时,会将布局底部的导航条顶上去(解决方法之一)

这只是其中一种方法android:windowSoftInputMode有很多属性可以添加,必须是一个state...|ajust... 我只是觉得这种比较好用 在项目的AndroidManifest.xml文件中界面对应的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",这样会让屏幕整体上移. <activity android:name=".S_MainActivit

关于iOS 7以后textview 多行输入的时候,光标上下跳动的解决方法

光标上下跳动的问题: 解决办法 加入这个属性:    _myTextView.layoutManager.allowsNonContiguousLayout=NO;

iOS中 H5的input输入框focus()无法自动拉起键盘(解决方法)

ios的hybird APP 无法使用focus()获取焦点和键盘的问题. 解决方案 原来,在App的配置文件(config.xml),里面默认会有一句 1 <preference name="KeyboardDisplayRequiresUserAction" value="true" /> 这里面的大概意思就是,键盘的显示需要用户去触发,而且是设置为true的!!! 那么下面你们知道怎么做了吧,只需要把value的值改为false,一切都解决了. 1