Louis Brahmi
Louis Brahmi

Reputation: 862

Set a PasswordField to secureTextEntry give me a strange behaviour

I have a passwordField for which I set the isSecureTextEntry to true to hide the characters. But when I click on this passwordField, the following error appears in the log:

[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: "myapp" due to error: iCloud Keychain is disabled

and the keyboard automatically changes from azerty to qwerty...

If I remove the passwordField.isSecureTextEntry = true, the problem disappears, but the character are not hidden...

Here's my code :

passwordField.borderStyle = UITextField.BorderStyle.none
passwordField.font = UIFont(name: "Avenir-Heavy", size: 13)
passwordField.autocorrectionType = UITextAutocorrectionType.no
passwordField.clearButtonMode = UITextField.ViewMode.whileEditing
passwordField.keyboardType = UIKeyboardType.default
passwordField.returnKeyType = UIReturnKeyType.done
passwordField.contentVerticalAlignment = UIControl.ContentVerticalAlignment.bottom
passwordField.isSecureTextEntry = true

I tested this answer but nothing changed.

How can I hide the character of my textField without iCloud Keychain and without change of keyboard to qwerty?

I checked other answers, but nothing is similar to my problem...

Upvotes: 33

Views: 25322

Answers (7)

OffensivelyBad
OffensivelyBad

Reputation: 801

I borrowed @Hamid Reza Ansari's answer above, but also had to support older iOS versions, so wrapped it in a condition:

if #available(iOS 12.0, *) {
    self.textContentType = .oneTimeCode
}

Upvotes: 0

Hamid Reza Ansari
Hamid Reza Ansari

Reputation: 1147

in my case: I have 4 fields (username-email-pass-confirm pass) and when the user tap on password or confirm password fields the keyboard return that error and show a strong password suggestion and don't let to change the password field text.

solution: I changed all fields Content type to (One Time Code) and just set (Secure Text Entry = true) in the password and confirm password fields.

Upvotes: 3

Deviyani Swami
Deviyani Swami

Reputation: 765

Automatic Strong Passwords :- Enable iCloud Keychain

Automatic Strong Passwords suggestion works if user has enabled the iCloud keychain in its iPhone.

I was able to solved by these following steps:-

  • Go to the Setting
  • Tap on UserName (Apple Id)
  • Tap on iCloud
  • Tap on keychain
  • Enable iCloud Keychain

Upvotes: 0

Adwait Gaikwad
Adwait Gaikwad

Reputation: 93

I was having same issue while i was running my application on the simulator. Setting autocorrection to no solved my issue. I hope it helps you.

textFieldPassword.autocorrectionType = .no

Upvotes: 4

Darren Black
Darren Black

Reputation: 1040

This happens when the system's user doesn't have iCloud Keychain enabled. As will often be the case on the Simulator :)

I ran into this on the simulator and came here. Tried it on my phone (where iCloud Keychain is enabled), and got this instead:

[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: your.bundle.id due to error: Cannot save passwords for this app. Make sure you have set up Associated Domains for your app and AutoFill Passwords is enabled in Settings

So this is Apple's cool AutoFill feature. There are some steps described here that should enable that.

Upvotes: 13

Mojtaba
Mojtaba

Reputation: 6044

In our case we had another text field on same screen with content type Email Address, changing that to Username magically solved the problem.

Upvotes: 11

TDesign
TDesign

Reputation: 597

You are probably using the wrong Team ID in your association file. The Team ID is NOT the one yo usee under "signing Certificate" on XCode. To check your team ID go to your ACCOUNT on https://developer.apple.com/ , under membership. That should solve it. I was using the wrong Team ID and was stuck with the same issue.

With the fix above, just follow this: https://robopress.robotsandpencils.com/strong-passwords-in-ios-12-8ec819b3b99

Upvotes: 4

Related Questions