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 设备上都可以使用自动对焦 - 输入被聚焦,但屏幕键盘没有出现,所以用户必须手动点击输入。