Исправляйте ионы-заголовки в верхней части страницы, когда клавиатура появляется в приложении Ionic
У меня есть приложение для чата, когда я нажимаю на textarea
чтобы начать вводить новое сообщение, клавиатура подталкивает все содержимое выше. Это означает, что ion-header
исчезает. Я бы хотел, чтобы это все время отображалось в верхней части экрана.
Вот пример GIF: https://i.imgur.com/a/GcmagJi
Код ion-header
:
<ion-header>
<ion-navbar>
<ion-buttons ion-fixed end>
<button ion-button icon-only (click)="closeChat()">
<ion-icon name="close-circle"></ion-icon>
</button>
</ion-buttons>
</ion-navbar>
</ion-header>
Код ion-footer
:
<ion-footer>
<ion-grid>
<ion-row>
<ion-col col-9>
<textarea rows="3" [(ngModel)]="data.message" (keyup.enter)="sendMessage()" placeholder="Type your message ..."></textarea>
</ion-col>
<ion-col col-3>
<button ion-button (click)="sendMessage()">Send</button>
</ion-col>
</ion-row>
</ion-grid>
</ion-footer>
В моем файле app.module.ts
я использовал:
imports: [
BrowserModule,
LongPressModule,
IonicModule.forRoot(MyApp, {
scrollPadding: false,
scrollAssist: true,
autoFocusAssist: false
}
),
IonicStorageModule.forRoot(),
DragulaModule,
HttpModule
]
В моем chat.ts
меня есть:
constructor(private keyboard: Keyboard) {
this.keyboard.disableScroll(false);
}
Несмотря на все эти вещи, кажется, что заголовок не фиксируется на месте.
Я добавил полный код для chat.html
и chat.ts
в GitHib Gists ниже:
https://gist.github.com/christopherib/4b9e70590fb322bdc33ffbbe42d50685 https://gist.github.com/christopherib/cb3d234564c0feb1e8bf5b96f8d023c3
Ответы
Ответ 1
Когда появится клавиатура, запустите js-функцию. При этом дайте заголовку отрицательный запас.
Пример:
function myFunction() { document.getElementById("myDiv").style.marginBottom = "-15px"; }
Источник: https://www.w3schools.com/jsref/prop_style_marginbottom.asp
Вероятно, это более эффективное решение, но если положение: исправлено, это не работает, это лучшее, что я могу придумать.
Ответ 2
Вы можете использовать ион-элемент-делитель под ион-заголовок, как
<ion-header>
<ion-item-divider sticky>
<!-- Content -->
</ion-item-divider>
</ion-header>
липкие свойства, используемые, когда заголовок вверх они зафиксированы сверху
Ответ 3
Попробуйте запустить keyboard.disableScroll(true)
сразу после platform.ready()
Или попробуйте запустить keyboard.hideFormAccessoryBar(false);
Ответ 4
Вы пробовали использовать?
<ion-content fullscreen><ion-content>
В настоящее время я использую Ionic 4, и заголовок все еще выглядит хорошо, когда клавиатура открывается
У меня есть следующая структура
<ion-header no-border>
<ion-toolbar>
<ion-fab-button>
<ion-icon name="ios-arrow-back"></ion-icon>
</ion-fab-button>
<ion-title></ion-title>
</ion-toolbar>
</ion-header>
<ion-content fullscreen>
......
</ion-content>
<ion-footer no-border>
......
</ion-footer>