PhoneGap中文网

标题: IOS 9中 ionic header 被键盘顶出屏幕 [打印本页]

作者: ddcat    时间: 2016-2-27 17:52
标题: IOS 9中 ionic header 被键盘顶出屏幕
本帖最后由 ddcat 于 2016-2-27 17:54 编辑

IOS 9,当input获得焦点的时候,弹出键盘,会把ionic的header顶到屏幕外面,导致状态条文字和内容重叠。

ionic的文档里写:
如果在input获取焦点时,你app的内容(包含header)被挤到上面或视图以外,就需要尝试设置cordova.plugins.Keyboard.disableScroll(true)。

但是在app.js内加入
  1. $ionicPlatform.ready(function() {
  2.       if(window.cordova && window.cordova.plugins.Keyboard) {
  3.         cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
  4.         cordova.plugins.Keyboard.disableScroll(true);
  5.       }
复制代码

并没有什么效果,不知道是哪里设置不对么?
此时,我想将系统的状态条设置为黑色背景,这样可以覆盖下面的文字。
但是我添加了StatusBar插件,在app.js内加入:
  1.       if(window.StatusBar) {
  2.         StatusBar.styleBlackOpaque();
  3.       }
复制代码

也是没有效果。

求解救!!!



作者: ionicwang    时间: 2016-2-27 20:34
截个图瞅瞅
作者: ddcat    时间: 2016-2-27 20:48
ionicwang 发表于 2016-2-27 20:34
截个图瞅瞅

正常情况:


当键盘弹出来:


谢谢!!

作者: ionicwang    时间: 2016-2-29 09:14
  1.     .run([ '$rootScope', '$state', '$stateParams','$ionicPlatform','Storage', function ($rootScope,$state,$stateParams,$ionicPlatform,Storage) {
  2.      $ionicPlatform.ready(function() {
  3.      // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
  4.      // for form inputs)
  5.          if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
  6.             cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
  7.          }
  8.         if (window.StatusBar) {
  9.          // org.apache.cordova.statusbar required
  10.               StatusBar.styleLightContent();
  11.          }

  12.          document.addEventListener("deviceready",  function onDeviceReady() {
  13.              // console.log('设备id:'+device.uuid);
  14.              Storage.set('device_id',device.uuid);
  15.          }, false);

  16.      });
复制代码
下面这个插件配置一下,ios有输入框 内容向上是正常的,但是导航栏应该是不会动的

  if (window.StatusBar) {
         // org.apache.cordova.statusbar required
              StatusBar.styleLightContent();
         }



作者: ddcat    时间: 2016-2-29 11:57
ionicwang 发表于 2016-2-29 09:14
下面这个插件配置一下,ios有输入框 内容向上是正常的,但是导航栏应该是不会动的

  if (window.StatusBar ...

安卓里面,header是不会顶上去的,只是ios里会顶上去。
我在controller里添加disableScroll(true),则键盘又会覆盖掉输入框。

我的另一个app,ios中并没有这个问题,看来还是哪里设置的不对了。

StatusBar 我昨天试了一天,但是只能改变文字为白色,背景色却一直是透明的。
我尝试网上说的,把webview的高度下移20px,但是这样仍然无法解决整个儿webview被顶上去的问题。



作者: admin    时间: 2016-2-29 13:36
org.apache.cordova.statusbar   安装这个插件 按照楼上的方式试试

ios中输入框就是顶上去的
作者: ddcat    时间: 2016-2-29 16:05
admin 发表于 2016-2-29 13:36
org.apache.cordova.statusbar   安装这个插件 按照楼上的方式试试

ios中输入框就是顶上去的 ...

我的问题不是输入框被顶上去,而是ionic 的 header 被顶得看不到了。
作者: ddcat    时间: 2016-2-29 17:44
崩溃了。。。。

刚才又编译了一下,问题消失了。
nav-bar不会被顶出去了。。。。。。
真是白白浪费了两天时间。。。。。。
谢谢楼上的帮助了。。。。

作者: 15689705887    时间: 2016-3-9 17:31
楼主求助啊,我也遇到了跟你一样的情况。ionic开发的ios   <input>标签填写内容,页面就会放大把下面的导航栏顶出屏幕去找不到。然后我也按照楼上所说的
if (window.StatusBar) {
         // org.apache.cordova.statusbar required
              StatusBar.styleLightContent();
         }
跟你说的: cordova.plugins.Keyboard.disableScroll(true);
都加上了,插件什么的都装了。导出ipa测试还是会把导航顶没
作者: ionicwang    时间: 2016-3-9 20:15
15689705887 发表于 2016-3-9 17:31
楼主求助啊,我也遇到了跟你一样的情况。ionic开发的ios   标签填写内容,页面就会放大把下面的导航栏顶出 ...

多方一些内容  网上拉 然后看看header在哪里
作者: 15689705887    时间: 2016-3-10 11:55
ionicwang 发表于 2016-3-9 20:15
多方一些内容  网上拉 然后看看header在哪里

楼主我给你截个图: ,我的是一输入文字之后红线中的导航没了。然后整个页面都会变大

作者: ddcat    时间: 2016-4-5 22:08
15689705887 发表于 2016-3-9 17:31
楼主求助啊,我也遇到了跟你一样的情况。ionic开发的ios   标签填写内容,页面就会放大把下面的导航栏顶出 ...

这个问题反复出现,新装app是好的,用用就又会被顶出去了。
到现在也只能是忽略。




欢迎光临 PhoneGap中文网 (http://bbs.phonegap100.com/) Powered by Discuz! X3.2