【发布时间】:2017-09-30 02:31:08
【问题描述】:
我是离子新手。我开始设计和开发我的应用程序,但很快就遇到了问题。我真的不知道 iPhone 是如何工作的,因为我只是在我的 android 设备上测试它。
在我的应用程序中,我使用的是起始标签模板,顶部有标题,底部有标签。在我的一个导航视图中,我有一个固定的控制区域、一个可滚动的区域和一个固定的窄输入区域。下面是我的应用布局的简单描述:
我在这里面临的问题是,当我点击输入区域进行输入时,会弹出 android 键盘,向上推动滚动区域、输入区域和选项卡,这样我的屏幕将如下所示:
这基本上“堵塞”了我的应用程序外观。所以我开始思考其他人是如何处理它的。通过谷歌搜索,我发现当键盘处于活动状态时,我可以通过向我的divs 提供“hide-on-keyboard-open”类来隐藏东西,但这只会在display: none 保持其宽度、高度和位置的同时。
我的问题是有什么方法可以在我的键盘打开时从字面上“删除”我的元素并在我的键盘关闭时“恢复”它们?我试过了
window.addEventListener('native.keyboardshow', function(){
document.body.classList.add('keyboard-open');
});
if(angular.element(document.querySelector("body")).hasClass("keyboard-open")) {
angular.element(document.querySelector("div.tab-nav.tabs").remove());
}
将keyboard-open 类添加到我的body 元素并删除我的选项卡(尽管我认为我应该监控选项卡的类更改以使remove() 操作起作用,但我只找到了jQuery 方法来做到这一点我相信这违反了 angularJS 的规则?)但它没有用。
那么,解决这个问题的常用方法是什么?在我不断思考的过程中,我相信仅仅删除和恢复某些元素,或者无论是否可能,让键盘位于 body 元素之上(就像 z-index 差异一样)并不是一个很好的体验。
提前感谢您的帮助。
【问题讨论】:
-
如果你还没有找到什么,那么试试这个codepen.io/anon/pen/JXwGWJ
-
@Atula 感谢您的建议,但您的建议是使用侧边菜单而不是标签,对吗?但我真的不认为它回答了我的问题,因为这仍然会导致我的滚动和输入区域在键盘打开时变得狭窄。关于如何避免这种情况的任何建议? (请看上面我的应用布局的粗略草图。)
-
这不是关于侧边菜单或标签的。这是如何修复键盘。但也许它不适合你。
-
@Atula 好吧,我再次查看了代码,但没有任何键盘操作的迹象?
标签: android angularjs ionic-framework android-softkeyboard