Angular 触摸设备的自动对焦指令
Angular autofocus directive for touch devices
我正在使用指令在输入上自动对焦,但它似乎不适用于触摸设备。根据我的搜索,我还没有找到任何也适用于触摸设备的解决方案。
如何扩展此指令以使其也适用于触摸设备?
'use strict';
shoppingApp.directive('autofocus', ['$timeout', function($timeout) {
return {
restrict: 'A',
link : function($scope, $element) {
$timeout(function() {
$element[0].focus();
});
}
}
}]);
如果您在 iOS 设备上尝试此操作:Apple 不会让您在没有用户明确表达意图的情况下自动聚焦于某个元素。这是因为设置 KeyboardDisplayRequiresUserAction
对 Mobile Safari 是正确的。
这是 Apple 的可用性决定,目前没有解决方法。
您是否在您的应用中使用 ngTouch?如果应用程序中未加载 ngTouch,您的代码对我有用并且自动聚焦 Chrome 和 Android,但是如果使用 ngTouch,它不仅不起作用,有时还会使输入完全无法聚焦手动单击输入时散焦。 [捂脸]
我认为是 this issue with ngTouch,现已修复。更新到 Angular 1.5.2 为我解决了这个问题。
正如@jorisw 所提到的,我不认为在任何 iOS 设备上都可以使用自动对焦 - 输入被聚焦,但屏幕键盘没有出现,所以用户必须手动点击输入。
我正在使用指令在输入上自动对焦,但它似乎不适用于触摸设备。根据我的搜索,我还没有找到任何也适用于触摸设备的解决方案。
如何扩展此指令以使其也适用于触摸设备?
'use strict';
shoppingApp.directive('autofocus', ['$timeout', function($timeout) {
return {
restrict: 'A',
link : function($scope, $element) {
$timeout(function() {
$element[0].focus();
});
}
}
}]);
如果您在 iOS 设备上尝试此操作:Apple 不会让您在没有用户明确表达意图的情况下自动聚焦于某个元素。这是因为设置 KeyboardDisplayRequiresUserAction
对 Mobile Safari 是正确的。
这是 Apple 的可用性决定,目前没有解决方法。
您是否在您的应用中使用 ngTouch?如果应用程序中未加载 ngTouch,您的代码对我有用并且自动聚焦 Chrome 和 Android,但是如果使用 ngTouch,它不仅不起作用,有时还会使输入完全无法聚焦手动单击输入时散焦。 [捂脸]
我认为是 this issue with ngTouch,现已修复。更新到 Angular 1.5.2 为我解决了这个问题。
正如@jorisw 所提到的,我不认为在任何 iOS 设备上都可以使用自动对焦 - 输入被聚焦,但屏幕键盘没有出现,所以用户必须手动点击输入。