Я использую часто используемую ионную директиву, чтобы установить фокус на текстовое поле на загрузке страницы, которое показывает ионную клавиатуру, и отлично работает на каждом устройстве, которое я тестировал, за исключением iPhone 4s.
HTML
<textarea focus-me></textarea>
JS
.directive('focusMe', function($timeout) {
return {
link: function(scope, element, attrs) {
$timeout(function() {
element[0].focus();
}),350;
}
};
});
На iPhone 4s, когда текстовое поле теряет фокус, клавиатура исчезает, а затем снова возвращается вверх. Это не происходит ни на одном другом устройстве.
Как настроить фокус на текстовое поле на загрузку страницы (и последующие загрузки страниц) и не допустить, чтобы ионная клавиатура выскакивала назад, когда текстовое поле теряет фокус?
В вашем коде есть ошибка, вызывающая директиву $timeout
. Должен быть:
.directive('focusMe', function($timeout) {
return {
link: function(scope, element, attrs) {
$timeout(function() {
element[0].focus();
}, 350); // correct this
}
};
});
$timeout
неверен. Это должно быть$timeout(function() { element[0].focus(); },350);