¿Cómo establece el foco en Safari en iOS, o determina que no puede?

No lo he intentado, pero ¿no deberías intentar detectar un dispositivo táctil y utilizar sus eventos específicos?

Creo que debería pasar del modo “solucionar un problema” al modo “admitir una función” . El hecho de que solo iOS tenga un problema con esto no significa que lo esté haciendo bien en todos los demás dispositivos. Quiero decir, lo siguiente que notarás es que la próxima versión de Android o WP elimina el soporte focus (). Y si lo piensas. En una computadora de escritorio, solo hay un cursor. Siempre habrá un único elemento en foco. Porque solo hay un cursor. Pero en un dispositivo de pantalla táctil, bueno, puede haber una pantalla multitáctil de 10 puntos. ¿Cuál de estos 10 puntos está en foco?

Modernizr es una buena biblioteca para detectar características del cliente.

  if (Modernizr.touch) {
     alerta ('Pantalla táctil');
 } más {
     alerta ('Sin pantalla táctil');
 }

Detección de un dispositivo de “pantalla táctil” utilizando Modernizr [Sugerencia rápida]

con suerte esto [1] debería resolver su problema. Renuncié a esto, ya que requiere una corrección de código (sp. Safari) que podría / no afectar el comportamiento en otros navegadores (no quiero correr ningún riesgo en prod y no quiero gastar demasiado en regresión)

Notas al pie

[1] Safari móvil: ¿El método de enfoque () de Javascript en el campo de entrada solo funciona con clic?

¿Has intentado simplemente agregar el atributo de enfoque automático?