Столкнулся, я тут, на днях со странным поведением функции focus() для input элементов в AngularJS приложении.

Суть в том, что в нашем случае надо кликнуть по li элементу и после клика вместо li элемента должен появиться input для ввода текста с мигающим курсором. Вообщем, на десктопе и андроиде проблемы не было, а на IOS устройствах код не срабатывал.

Проблема известная, народ сталкивается. Пробовал много вариантов, предложенных на stackoverflow, ничего не помогло.

Но в одном из issue для jquery-mobile прочитал, что Safari на IOS блокирует автоматическое включение автофокуса, чтобы, лишний раз, не раздражать пользователя  клавиатурой. Также увидел совет использовать событие click. В итоге получится такой код, который работает у меня на IOS устройствах:

Работающий код с любого устройства вы можете проверить тут https://output.jsbin.com/bojozadige/

А как вы решили эту проблему?