Javascript 位于虚拟键盘下方的iOS 7.1输入字段强制聚焦

Javascript 位于虚拟键盘下方的iOS 7.1输入字段强制聚焦,javascript,ios,cordova,ios7.1,ionic-framework,Javascript,Ios,Cordova,Ios7.1,Ionic Framework,我正在使用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-den

我正在使用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" />

  • 相对于顶部定位输入时,不会调整大小。但是,将输入定位到足够低的位置,使其与键盘顶部对齐,确实会导致无调整大小错误。这可以通过构建和更改页脚来复制

    添加消息

    在www/index.html中


这复制了iOS7.1中的错误,并在iOS7.0.x中正常工作。我已经采纳了这些建议,但它们已经过时了,最终没有起作用。提前感谢您的任何见解

您是否尝试过明确设置宽度?像上面提到的那样


Edit:在beta 4中已经修复了这个问题,所以这些黑客修复应该是不必要的:)对于Ionic团队来说,这是认识到问题并修复它的最大优势

我现在要讲的内容与@ajansapresponse类似。我不认为它是一个好的解决方案,因为它有bug(类似于在其他线程中指出的那些错误)。p> 当我弄明白的时候,我会尝试用更好的东西来更新它,并且我会保持这个打开状态,以防有人提出更好的解决方案

$("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); 

});
此外,我确保在从chat视图导航回来后重新设置标题


希望这有帮助

您对cordova/phone gap“Keyboard ShrinksView”首选项的价值是什么?我已经尝试了true和false,这没有什么区别。这并不是对我有效的修复方法。我现在正在测试一个解决方案,并将在确认其有效后进行更新。再次感谢您的投入!你的解决方案有什么进展吗?给出了一个黑客补丁-祝你好运!
$("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); 

});