当键盘显示时,Ionic 2 Form上升

tus*_*lar 16 typescript ionic-framework ionic2 ionic3 angular

我正在使用离子2的最新版本.我的代码<ion-content padding><form></form></ion-content>里面有一个文本输入.当我尝试在Android上输入内容时,整个页面会被键盘向上推.

html文件

<ion-content class="login-screen" padding>
  <form (ngSubmit)="login()" novalidate>
    <ion-list>
      <ion-item>
        <ion-label fixed>Username</ion-label>
        <ion-input type="text" name="username" [(ngModel)]="username" required></ion-input>
      </ion-item>
      <ion-item>
        <ion-label fixed>Password</ion-label>
        <ion-input type="password" name="password" [(ngModel)]="password" required></ion-input>
      </ion-item>
    </ion-list>
    <button ion-button full type="submit">Login</button>
  </form>
  <button ion-button clear full outline type="button" (click)="openModal()">Forgot Password?</button>
</ion-content>
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

seb*_*ras 44

这一切都应该在RC4中修复(很快).话虽如此,要在输入聚焦时禁用滚动,请将其添加到配置对象(在@NgModule)中:

...
imports: [
    IonicModule.forRoot(MyApp, {
        scrollAssist: false, 
        autoFocusAssist: false
    }),
    ...
],
...
Run Code Online (Sandbox Code Playgroud)

这里有两个属性的非常好的解释:

但是,在Ionic2默认值下,还有其他功能可以通过在内容底部添加填充('scrollAssist')来补偿键盘视频,并通过向后滚动来保持焦点输入元素在视口内( 'autoFocusAssist').scrollAssist和autoFocusAssist都在配置中很好地实现了开关,但似乎还没有公开记录.

您还可以使用ionic-plugin-keyboard停止本机浏览器向上推/滚动内容窗格,并允许键盘滑过并覆盖现有内容:

this.platform.ready().then(() => {
    StatusBar.styleDefault();
    Splashscreen.hide();

    Keyboard.disableScroll(false); // <- like this

    // ...
Run Code Online (Sandbox Code Playgroud)

UPDATE

就像评论中提到的@Luckylooke一样:

支持Keyboard.disableScroll(),ios和windows

更新II

截至Ionic 3.5.x似乎键盘仍然存在一些问题.我发现从UI/UX的角度来看,以下配置产生了更好的结果(与默认值相比):

@NgModule({
    declarations: [
        MyApp,
        //...
    ],
    imports: [
        //...
        IonicModule.forRoot(MyApp, {
            scrollPadding: false,
            scrollAssist: true,
            autoFocusAssist: false
        })
    ],
    bootstrap: [IonicApp],
    entryComponents: [
        // ...
    ],
    providers: [
        // ...
    ]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

通过保持scrollAssist: true我们避免输入被键盘隐藏,如果它靠近页面的底部,并通过设置scrollPadding: false我们还避免一些与隐藏键盘后的空白空间相关的奇怪错误.

  • 注意:支持Keyboard.disableScroll(),ios和windows (2认同)
  • 非常感谢你的工作100% (2认同)
  • @sebaferreras,问题仍然存在 (2认同)
  • 没关系解决了它,使用了“top”和我删除的其他一些属性并且它起作用了 (2认同)

Fer*_*lmo 0

输入和表单的滚动存在一些问题,就像这里提到的那样,所以我建议等待下一个 RC 来解决这个问题,因为它不是你的代码错误,只是离子错误。