I support the automatic strong password feature on my registration screen and when I go to log in later, I discover that it has saved the wrong field from my form as the username.
I've read the documentation for password autofill and automatic strong passwords pretty thoroughly and my best guess is that something about how I have designed my view controller is confusing the "heuristics" so badly that they're ignoring the content types on my text fields, but I can't seem to find any documentation about what exactly those heuristics examine so I'm stuck.
I'm only supporting iOS 12 for now. Here's how I have the app's registration screen set up:
There is a single UIViewController containing a UIScrollView that has 4 UITextFields arranged using UIStackViews. There is a submit button at the bottom of the form that is labelled "Sign Up Now". This is all being set up via Interface Builder. The form has:
- An email address field that I've marked with content type Username and the keyboard type for email
- a field for the user's first name, with content type Given Name
- a password field that I've marked with content type New Password
- a repeat password field that I've also marked with Content Type New Password.
When I test this out, it is saving the user's first name as their username instead of the email address. The next time the user comes to the login screen in the app, their first name is suggested for the username in the login screen instead of their email address. If the user then corrects the username field and proceeds to log in, a new set of credentials are added for the associated domain with the correct username and password. I have also checked this by going to a Mac and looking in the saved passwords in Safari and I've watched it update while the user goes through these steps.
So what is going on here? How do I convince the strong password suggestion to save the right username?