Я знаю, что это очень старый. Я новичок в 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();
}
Я нашел решение, которое работает, хотя и немного некрасиво. Это также не сработает в каждой ситуации, но у меня работает. Поскольку я адаптирую размер пользовательского интерфейса к размеру окна 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, и, похоже, все работает нормально.
Что ж, вы можете определить, когда ваши поля ввода находятся в фокусе, и вы знаете высоту клавиатуры. Также доступен CSS для определения ориентации экрана, так что я думаю, вы можете его взломать.
Вы бы хотели как-то справиться с физической клавиатурой.
Я немного поискал и не смог найти ничего конкретного для «на клавиатуре показано» или «на клавиатуре отклонено». См. официальный список поддерживаемых событий . См. Также Техническое примечание TN2262 для iPad. Как вы, вероятно, уже знаете, есть событие тела onorientationchange
, которое вы можете подключить для определения ландшафта / портрета.
Точно так же, но догадка ... вы пробовали определять изменение размера? Изменения области просмотра могут вызвать это событие косвенно из-за отображения / скрытия клавиатуры.
window.addEventListener('resize', function() { alert(window.innerHeight); });
Это просто будет предупреждать о новой высоте при любом изменении размера ....
Я сам не пробовал, так что это всего лишь идея ... но вы пробовали использовать медиа-запросы с CSS, чтобы увидеть, когда изменяется высота окна, а затем изменить дизайн для этого? Я бы предположил, что Safari Mobile не распознает клавиатуру как часть окна, так что, надеюсь, это сработает.
Пример:
@media all and (height: 200px){
#content {height: 100px; overflow: hidden;}
}
Если есть экранная клавиатура, фокусировка на текстовом поле, которое находится в нижней части окна просмотра, заставит Safari прокрутить текстовое поле в поле зрения. Возможно, есть способ использовать это явление для обнаружения присутствия клавиатуры (наличие крошечного текстового поля внизу страницы, которое на мгновение становится фокусом, или что-то в этом роде).