Итак, я видел много потоков о проблеме iOS, сосредоточившись на элементе input/textarea. (См. здесь и здесь). Кажется, что iOS не позволит вам вручную сосредоточиться на одном из этих элементов, и требует, чтобы он был подлинным нажатием/щелчком, чтобы сфокусироваться на элементе.
Я попытался имитировать щелчок, нажав кнопку мыши, просто нажав() сразу... всевозможные вещи.
Вот мое текущее обходное решение, которое я пытаюсь реализовать:
$scope.gotoElement = function(eID) {
// call $anchorScroll()
$scope.smoothScrollTo(eID).then(function() {
clickElement('#textarea');
});
}
function clickElement(e) {
$(e).on('touchstart', function() {
//$(e).val('touchstart');
$(e).focus();
});
$(e).trigger('touchstart');
}
Вам не нужно беспокоиться о функции прокрутки, я знаю, что это работает, и я достаточно проверил это. Прокомментированный $(e).val('touchstart')
работает без проблем для изменения текста текстового поля, но .focus()
не работает в iOS. Я тестировал это на устройстве Android, и он отлично работает, но на iOS он просто не поднимает клавиатуру. Иногда он начинает поднимать клавиатуру на полсекунды, а затем снова исчезает.
Я рассмотрел другие темы, как я уже говорил выше, и я не могу понять, как написать обходной путь для этого.
Любые идеи?