NativeScript - ios как настроить вид при появлении клавиатуры - PullRequest
0 голосов
/ 05 мая 2020

Я создаю приложение с NativeScript 6.4.1 и Angular 8.

Я работал над этим в Android, и если мы установим 'android:windowSoftInputMode="adjustResize"' в файле AndroidManifest, макет изменится при открытии клавиатуры: Как настроить раскладку при появлении мягкой клавиатуры

Я предоставил свой образец кода. У меня есть страница входа в систему с текстовым полем. Я хочу, чтобы изображение сжималось при появлении клавиатуры.

например, для получения желаемого результата см. Изображения

Я изменил файл AndroidManifest: https://github.com/NativeScript/NativeScript/issues/5088#issuecomment -353394591

и прослушал событие layoutChanged на странице, как показано в примере кода.

Отлично работает для Android.

Мой вопрос: есть ли аналогичное поведение для iOS?

Вот исследование, которое я провел для iOS:

Я пытался использовать этот настоятельно рекомендуемый плагин: https://www.npmjs.com/package/nativescript-iqkeyboardmanager

Хотя это не позволяет клавиатуре закрывать текстовое поле, это не помогает мне сжать мой вид.

https://developer.apple.com/documentation/uikit/uikeyboarddidshownotification?language=objc

https://github.com/NativeScript/NativeScript/issues/2907

https://stackoverflow.com/questions/26070242/move-view-with-keyboard-using-swift

Есть ряд событий клавиатуры, которые мы можем прослушивать и реагировать to.

Например:

UIKeyboardWillShowNotification
Posted immediately prior to the display of the keyboard.

UIKeyboardDidShowNotification
Posted immediately after the display of the keyboard.

UIKeyboardWillHideNotification
Posted immediately prior to the dismissal of the keyboard.

UIKeyboardDidHideNotification
Posted immediately after the dismissal of the keyboard.

UIKeyboardWillChangeFrameNotification
Posted immediately prior to a change in the keyboard’s frame.

UIKeyboardDidChangeFrameNotification
Posted immediately after a change in the keyboard’s frame.

UIKeyboardAnimationDurationUserInfoKey
UIKeyboardIsLocalUserInfoKey
UIKeyboardCenterBeginUserInfoKey
UIKeyboardFrameEndUserInfoKey

Это позволит мне установить логическое значение, когда клавиатура отображается и скрывается, как я сделал в моем примере кода. Я могу скрыть изображения и т. Д. c.

Однако он не сжимает sh макет таким же образом, как Android.

Я читал здесь некоторые другие ответы, которые также рекомендую прислушиваться к событиям клавиатуры: Как показать полный список, когда клавиатура отображается в SwiftUI

Как я могу сжать sh мою раскладку, когда отображается клавиатура?

Вот репозиторий для моего примера кода:

https://github.com/aubrey-fowler/KeyBoardHelp

enter image description here enter image description here

1 Ответ

1 голос
/ 05 мая 2020

IQKeyboardManager не изменяет размер кадра любых представлений, но вместо этого использует смещение позиции.

Я не тестировал его, но теоретически вы можете сделать это, добавив обратный вызов, который слушает движение взгляда. Вероятно, это не будет хорошо работать с бизнесом смещения вида и может вызвать нестабильность в вашем представлении.

import { isIOS } from 'tns-core-modules/platform/platform';
if (isIOS) {
    IQKeyboardManager.sharedManager().movedDistanceChanged = (delta: number) => {
        console.log(`IQKeyboardManager (moved distance): ${delta}`);
    };
}

Не забудьте добавить к вашему references.d.ts, чтобы получить определение класса IQKeyboardManager:

/// <reference path="./node_modules/nativescript-iqkeyboardmanager/index.d.ts" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...