Mobile safari manually focus text field failed using a delay.

button.addEventListener('click', function() {
    // *** If triggered immediately - functionality occurs as expected
    // input.focus();
    // *** If called by callback - triggers the focusin event, but does not bring up keyboard or cursor
    setTimeout(function() {
    }, 10);

Remember that on iOS setting focus on an input element brings up the keyboard – so all those web pages out there that set focus on an input element on page load, like Google does, would be extremely annoying to use on iOS. I guess Apple decided they had to do something to prevent this. this is a feature not a bug.

There’s no known workaround for this, so you’ll have to ditch the idea of using a delay.