15

我正在使用 Cordova 编写一个聊天应用程序,聊天视图在页面底部有一个类似 iMessage 的输入字段。在 iOS 7.0 中,单击字段会调整窗口大小并将输入字段置于键盘上方。在 iOS 7.1 中,单击输入字段只是将所有内容从底部向上推,并不会调整窗口大小。

我的视口设置为:

<meta name="viewport" content="user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1, target-densitydpi=device-dpi" />
  • 相对于顶部定位输入时,不会发生调整大小。但是,将输入放置在足够低的位置以与键盘顶部对齐确实会导致无调整大小错误。这可以通过构建Ionic 磨砂玻璃演示并将页脚从

    <footer class="bar bar-footer bar-frosted"><button class="button button-clear button-positive" ng-click="add()">Add Message</button></footer>

    <footer class="bar bar-footer bar-frosted"><input name="testInput"></footer>

    在 www/index.html

这复制了 iOS7.1 中的错误,并在 iOS 7.0.x 中按预期工作。我已按照此处的建议进行操作,但它们的线程已过时并且最终无法正常工作。提前感谢您的任何见解!

4

2 回答 2

0

您是否尝试过明确设置宽度?就像这里提到的?

<meta name="viewport" content="width=device-width">
于 2014-04-04T06:53:49.037 回答
0

编辑:Ionic已经在 beta 4 中修复了这个问题,所以这些 hacky 修复不应该是必要的 :) Ionic 团队认识到问题并修复它!

我现在要做的类似于上面的@ajsnaps 答案。我不认为它是一个好的解决方案,因为它有错误(类似于其他线程中指出的错误)。

当我弄清楚时,我会尝试用更好的东西来更新它,如果有人提出更好的解决方案,我会保持打开状态。

$("input").on('focus',function(){ 

 //set brief timeout to let window catch up
 setTimeout(function(){

 //pull down the message area (scrollPane) and header (titleBar)
 //works on both 3.5" and 4" screens
 $("titleBar").css('top', '215px');
 $("scrollPane").css('top', '273px');

 },20); 

});

$("input").on('blur',function(){

 //set brief timeout to let window catch up
 setTimeout(function(){

 //push the top back up
 $("titleBar").css('top', '0px');
 $("scrollPane").css('top', '56px');

 },20); 

});

此外,我确保在从聊天视图返回后重置标题。

希望这可以帮助!

于 2014-05-05T20:06:06.303 回答