iOS5 Safari: клавиатура не прячется в приложении HTML на домашнем экране - PullRequest
2 голосов
/ 19 ноября 2011

Я работаю над настраиваемым приложением для iPad, которое работает как приложение для домашнего экрана, но выполнено во всех CSS / HTML / Javascript. (здесь не используется SDK)

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

Объяснение того, что я пытался скрыть клавиатуру:

Я попытался размыть все поля ввода, чтобы убрать фокус. Я попытался установить фокус на нетекстовые элементы поля.

Было несколько потоков в Stackoverflow с начала этого года / прошлого года, которые предлагали оба этих варианта, но, похоже, они больше не работают.

Чтобы проверить дальше, я поставил пробел a href = "#" на img, который был над калькулятором, чтобы я мог сфокусироваться на не входе и посмотреть, будет ли это автоматически минимизировать клавиатуру. Когда я касаюсь этого элемента над клавиатурой, фокус меняется, и я больше не нахожусь в режиме ввода, но клавиатура остается включенной.

Apple сломала эту функциональность с последним обновлением? Если да, то есть ли обходной путь?

Вот пример кода, который не работает:

    $('input').blur(function(e) {
        // Keyboard disappeared
           window.scrollTo(0, 1);
    }); 

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

Большое спасибо за любую помощь, и не стесняйтесь связывать / оскорблять меня, если я ошибочно разместил репост. :)

Ответы [ 2 ]

0 голосов
/ 25 мая 2012

document.activeElement.blur() внутри блока try catch работает для меня.(Возможно, вам также нужен setTimeout? Мне не нужен тайм-аут, и важно избегать тайм-аутов, где это возможно, потому что они могут легко вызвать неприятные баги!)

Также дважды проверьте, что вы не звонитеfocus () где-то в mousedown или событии щелчка (которое вызывает отображение клавиатуры).Вы можете использовать console.log(document.activeElement.tagName); или аналогичный, чтобы помочь найти то, что в данный момент находится в фокусе.

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

0 голосов
/ 23 ноября 2011

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

$('input').blur();

Вы должны поместить это в функцию / процедуру, которая происходит, когда вы хотите, чтобы она исчезла, если вы не хотите полностью ее отключить?

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