用于触摸设备的角度自动对焦指令

时间:2015-03-17 11:50:51

标签: javascript angularjs autofocus

我使用指令对输入进行自动对焦,但它似乎并不适用于触控设备。从我的搜索中我找不到任何适用于触控设备的解决方案。

如何将此指令扩展为也适用于触控设备?

'use strict';

shoppingApp.directive('autofocus', ['$timeout', function($timeout) {
  return {
    restrict: 'A',
    link : function($scope, $element) {
      $timeout(function() {
        $element[0].focus();
      });
    }
  }
}]);

2 个答案:

答案 0 :(得分:1)

If you're trying this on an iOS device: Apple won't let you auto focus on an element without the user explicitly expressing the intention to. This is because of a setting KeyboardDisplayRequiresUserAction which is true for Mobile Safari.

This is a usability decision on Apple's part and at present there is no workaround for it.

答案 1 :(得分:1)

您是否在自己的应用中使用ngTouch?你的代码适合我和我如果在应用程序中未加载ngTouch,则在Android上的Chrome上自动聚焦,但如果使用ngTouch,它不仅不起作用,有时它会在手动点击输入时通过去焦点使输入完全无法对焦。 [facepalm]

我认为它的this issue with ngTouch已经修复了。更新到Angular 1.5.2为我解决了这个问题。

正如@jorisw所说,我不认为可以让自动对焦在任何iOS设备上工作 - 输入是集中的,但屏幕键盘不会出现,因此用户必须手动点击输入