Веб-приложение для iPad: обнаружение виртуальной клавиатуры с помощью JavaScript в Safari?

Я знаю, что это очень старый. Я новичок в c и хотел проверить свой метод, который использует getchar:

#include <stdio.h>

int main()
{

    printf("Please enter your name\n");
    char string[10];

    scanf("%s", string);
    printf("Hello %s\n", string);

    //getchar();  # un commenting this line, fgets perfectly works!!
    printf("Please enter your name again\n");

    fgets ( string, 10, stdin );     

    printf("Hello again %s", string);

    getchar();
}
141
задан LKM 7 April 2010 в 14:12
поделиться

5 ответов

Я нашел решение, которое работает, хотя и немного некрасиво. Это также не сработает в каждой ситуации, но у меня работает. Поскольку я адаптирую размер пользовательского интерфейса к размеру окна iPad, пользователь обычно не может выполнять прокрутку. Другими словами, если я устанавливаю для окна scrollTop, оно останется равным 0.

Если, с другой стороны, отображается клавиатура, прокрутка неожиданно сработает. Поэтому я могу установить scrollTop, сразу проверить его значение, а затем сбросить его. Вот как это может выглядеть в коде с использованием jQuery:

$(document).ready(function(){
    $('input').bind('focus',function() {
        $(window).scrollTop(10);
        var keyboard_shown = $(window).scrollTop() > 0;
        $(window).scrollTop(0);

        $('#test').append(keyboard_shown?'keyboard ':'nokeyboard ');
    });
});

Обычно вы ожидаете, что это не будет видно пользователю. К сожалению, по крайней мере, при работе в симуляторе iPad заметно (хотя и быстро) снова прокручивается вверх и вниз. Тем не менее, это работает, по крайней мере, в некоторых конкретных ситуациях.

Я тестировал это на iPad, и, похоже, все работает нормально.

54
ответ дан 23 November 2019 в 23:01
поделиться

Что ж, вы можете определить, когда ваши поля ввода находятся в фокусе, и вы знаете высоту клавиатуры. Также доступен CSS для определения ориентации экрана, так что я думаю, вы можете его взломать.

Вы бы хотели как-то справиться с физической клавиатурой.

-1
ответ дан 23 November 2019 в 23:01
поделиться

Я немного поискал и не смог найти ничего конкретного для «на клавиатуре показано» или «на клавиатуре отклонено». См. официальный список поддерживаемых событий . См. Также Техническое примечание TN2262 для iPad. Как вы, вероятно, уже знаете, есть событие тела onorientationchange , которое вы можете подключить для определения ландшафта / портрета.

Точно так же, но догадка ... вы пробовали определять изменение размера? Изменения области просмотра могут вызвать это событие косвенно из-за отображения / скрытия клавиатуры.

window.addEventListener('resize', function() { alert(window.innerHeight); });

Это просто будет предупреждать о новой высоте при любом изменении размера ....

0
ответ дан 23 November 2019 в 23:01
поделиться

Я сам не пробовал, так что это всего лишь идея ... но вы пробовали использовать медиа-запросы с CSS, чтобы увидеть, когда изменяется высота окна, а затем изменить дизайн для этого? Я бы предположил, что Safari Mobile не распознает клавиатуру как часть окна, так что, надеюсь, это сработает.

Пример:

@media all and (height: 200px){
    #content {height: 100px; overflow: hidden;}
}
0
ответ дан 23 November 2019 в 23:01
поделиться

Если есть экранная клавиатура, фокусировка на текстовом поле, которое находится в нижней части окна просмотра, заставит Safari прокрутить текстовое поле в поле зрения. Возможно, есть способ использовать это явление для обнаружения присутствия клавиатуры (наличие крошечного текстового поля внизу страницы, которое на мгновение становится фокусом, или что-то в этом роде).

14
ответ дан 23 November 2019 в 23:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: