Виртуальная клавиатура с перекрытием ввода в веб-представлении - PullRequest
0 голосов
/ 18 марта 2019

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

У меня естьВеб-приложение Genero, которое отображает веб-вид приложения Angular, и проблема, с которой я сталкиваюсь, заключается в том, что представление (на основе Chrome v72) не будет прокручиваться под вводом, когда оно фокусируется, чтобы позволить пользователю увидеть, что он печатает.

Загрузка страницы в браузере работает очень хорошо, и я попробовал это в веб-представлении студии Android, которое также работает.

Так что я не знаю, вызывает ли проблема сам по себе Genero, или, может быть, каким-то особым образом он отображает представление, другую конфигурацию браузера и т. Д.

Все идеи приветствуются, если выСтолкнулся с такой проблемой, независимо от контекста, я попробую все, и я хотел бы избежать необходимости использовать какой-то хак, который создает пространство под вводом и прокручивая фокус вручную.

Ответы [ 3 ]

1 голос
/ 18 марта 2019

Убедитесь, что вы используете оператор INPUT, а не DISPLAY вместе с вашим WEBCOMPONENT. Об этом сообщалось с Android https://4js.com/support/issue/?id=GMA-1319, но тот же принципал мог применять iOS, GBC, GDC

В противном случае поднимите дело с местным контактным лицом поддержки 4J (при условии, что вы находитесь на техническом обслуживании). В прошлом были случаи, когда в этой области была проделана работа https://4js.com/support/issue/?id=GMA-920, и поэтому в этой области, возможно, потребуется внести некоторые уточнения.

PS Что касается вашего вступительного абзаца, у 4Js Genero есть модель платной поддержки. Парадокс этого в том, что вы не увидите здесь много вопросов о 4J Genero, потому что на них должны ответить 1. ваш местный контакт в службу поддержки и 2. наш форум для разработчиков. Затем это работает против нас в измерениях популярности языка, которые используют такие показатели, как количество сообщений переполнения стека.

0 голосов
/ 19 марта 2019

Что ж, похоже, это скорее проблема Genero в том, как он обрабатывает веб-просмотры, размещая виртуальную клавиатуру над веб-контентом, а не внутри него. Мы взяли это на их форуме, и они изучают это.

0 голосов
/ 18 марта 2019

Происходит то, что ваш рост вашего div не адаптируется к виртуальной клавиатуре.

Я бы предложил сделать что-то подобное в конструкторе:

const $resizeEvent = fromEvent(window, 'resize')
       .map(() => {
         return window.innerHeight;
       })
       .debounceTime(20).subscribe(data => {
          this.overflowHeight = `${data}px`;
       });

Чтоэто определит изменение размера, когда появится клавиатура.Затем вы меняете высоту на новую высоту div.Когда он закроется, он снова сработает и снова получит нормальный размер.

В вашем html:

<div [ngStyle]="'height': overflowHeight, 'overflow': 'auto'}" [scrollTop]="scrollHeight"></div>

Заголовок , если вы используете дочерний вид, убедитесь, чтоВы проверяете, сколько пикселей окружено, и делаете высоту - пиксели.

Каждый вход должен иметь уникальный идентификатор:

<input id={{uniqueId}} (focus)="scrollTo(uniqueId) (scroll)="setScrollHeigth($event)" />

И затем вы делаете:

private scrollTo(_index: any) {
        if (window.screen.width === 360) {
            height = document.getElementById(_index).offsetTop;
            if (height > 0) { this.scrollHeight = height; }
            else if (this.scrollHeigthElm > 0) { this.scrollHeight = 0; }
        }
} 

private setScrollHeigth(_event: any) { 
    this.scrollHeigthElm = _event.srcElement.scrollTop; 
} 

Что нужно сделать, это проверить, если ваш свиток выше нуля, и переместить его.И сбросьте его, когда ваш свиток на 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...