我正在开发一个网络应用程序,屏幕下半部分有两个输入字段。父视图绝对定位于屏幕。通常,人们会假设单击输入字段时,焦点会强制输入进入键盘上方的视图。但是,键盘覆盖了输入字段。
如果我开始打字,则该字段中不会输入任何内容。为了在字段中输入内容,我必须点击下一个箭头,然后点击上一个箭头(> 转到字段 #2,然后
我尝试调整视图以进行溢出滚动、相对位置并以编程方式设置点击时的焦点。这些解决方案都不起作用。不幸的是,我只能找到与 UITextViews 相关的答案以及具有完全相反问题的人(即不希望它自动滚动。)
对于任何感兴趣的人来说,简单的解决方案:
登记onfocus
您希望输入上的事件始终可见,如下例所示。由于我们不知道键盘何时会完全渲染,因此代码每 300 毫秒执行 5 次(持续时间 1.5 秒)。您可以根据自己的口味进行调整。
该解决方案唯一需要注意的是它依赖于scollIntoView
这可能不适用于某些旧浏览器(请参阅http://caniuse.com/#search=scrollIntoView http://caniuse.com/#search=scrollIntoView)。当然,您可以用等效的算法替换它以达到相同的结果。不管怎样,这个简单的解决方案应该能让你明白。
var scrolling = function(e, c) {
e.scrollIntoView();
if (c < 5) setTimeout(scrolling, 300, e, c + 1);
};
var ensureVisible = function(e) {
setTimeout(scrolling, 300, e, 0);
};
<p>Some text here</p>
<input type="text" value="focus me" onfocus="ensureVisible(this)" />
<p>Some text here</p>
<input type="text" value="select me" onfocus="ensureVisible(this)" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)