iOS 11 disable password autofill accessory view option?2019 Community Moderator ElectionObjective-C Disable AutoFill Password for UITextFieldiOS 8 - How to hide suggestion list above keyboard?How to hide inputAccessoryView without dismissing keyboardHow to disable new password Autofill feature in iOS 11 applications login screen?Set a PasswordField to secureTextEntry give me a strange behaviourReact Native - Disable Password AutoFill Option on iOS KeyboardiOS Passwords autofill accessory view makes app get stuckGetting strong password on not necessary field in iOS 12How to hide icon and text password above keyboard in iphone 6s and 5sHow can I disable the UITableView selection?iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheetPassing Data between View Controllerspassword autofill quicktype bar in ios 11iOS 11 AutoFill password feature doesn't work with other language than English languageHow to disable new password Autofill feature in iOS 11 applications in Hybrid Phonegap Apps?WKWebview Password API Autofill
Describing a chess game in a novel
Happy pi day, everyone!
Is "upgrade" the right word to use in this context?
A diagram about partial derivatives of f(x,y)
Violin - Can double stops be played when the strings are not next to each other?
Different outputs for `w`, `who`, `whoami` and `id`
How to pronounce "I ♥ Huckabees"?
ERC721: How to get the owned tokens of an address
How could an airship be repaired midflight?
Meme-controlled people
Does .bashrc contain syntax errors?
Brexit - No Deal Rejection
Does multi-classing into Fighter give you heavy armor proficiency?
et qui - how do you really understand that kind of phraseology?
Why do newer 737s use two different styles of split winglets?
What is "focus distance lower/upper" and how is it different from depth of field?
Why does overlay work only on the first tcolorbox?
What did “the good wine” (τὸν καλὸν οἶνον) mean in John 2:10?
Relationship between sampajanna definitions in SN 47.2 and SN 47.35
Why is the President allowed to veto a cancellation of emergency powers?
Adventure Game (text based) in C++
PTIJ: Who should I vote for? (21st Knesset Edition)
What are substitutions for coconut in curry?
Is there a place to find the pricing for things not mentioned in the PHB? (non-magical)
iOS 11 disable password autofill accessory view option?
2019 Community Moderator ElectionObjective-C Disable AutoFill Password for UITextFieldiOS 8 - How to hide suggestion list above keyboard?How to hide inputAccessoryView without dismissing keyboardHow to disable new password Autofill feature in iOS 11 applications login screen?Set a PasswordField to secureTextEntry give me a strange behaviourReact Native - Disable Password AutoFill Option on iOS KeyboardiOS Passwords autofill accessory view makes app get stuckGetting strong password on not necessary field in iOS 12How to hide icon and text password above keyboard in iphone 6s and 5sHow can I disable the UITableView selection?iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheetPassing Data between View Controllerspassword autofill quicktype bar in ios 11iOS 11 AutoFill password feature doesn't work with other language than English languageHow to disable new password Autofill feature in iOS 11 applications in Hybrid Phonegap Apps?WKWebview Password API Autofill
As of now I would like to opt out of the new option iOS 11 gives, that is to suggest passwords in the app. When I run the app on iOS 11 I get the autofill option on top of the keyboard and my username and password textfield don't even show up.
So, my question is, how can I disable the new password autofill feature all together so the key on the keyboard is not shown at all and the overall behavior is the same as pre iOS 11?
ios swift ios11
|
show 1 more comment
As of now I would like to opt out of the new option iOS 11 gives, that is to suggest passwords in the app. When I run the app on iOS 11 I get the autofill option on top of the keyboard and my username and password textfield don't even show up.
So, my question is, how can I disable the new password autofill feature all together so the key on the keyboard is not shown at all and the overall behavior is the same as pre iOS 11?
ios swift ios11
Try setting the username and password field'stextContentType
property to.textContentType
- This should tell iOS 11 that your fields aren't username/password fields (even though they are) and prevent the accessory view being displayed; Something like ` self.passwordField.textContentType = .textContentType`
– Paulw11
Aug 2 '17 at 5:51
@zumzum did you get any solution . please share
– Nazmul Hasan
Aug 10 '17 at 19:57
2
This is a problem for me as well. The autocomplete feature appears on the fields for signing up, which isn't desired. I'd like them just to be on the fields for logging in. Strange stuff.
– Brad Root
Sep 7 '17 at 2:11
2
Looks like on iOS12 it appears again. How did you solve it there?
– dollar2048
Aug 1 '18 at 9:09
In iOS12, it still appears. Do you have any idea ?
– Emrah Akgül
Aug 8 '18 at 13:55
|
show 1 more comment
As of now I would like to opt out of the new option iOS 11 gives, that is to suggest passwords in the app. When I run the app on iOS 11 I get the autofill option on top of the keyboard and my username and password textfield don't even show up.
So, my question is, how can I disable the new password autofill feature all together so the key on the keyboard is not shown at all and the overall behavior is the same as pre iOS 11?
ios swift ios11
As of now I would like to opt out of the new option iOS 11 gives, that is to suggest passwords in the app. When I run the app on iOS 11 I get the autofill option on top of the keyboard and my username and password textfield don't even show up.
So, my question is, how can I disable the new password autofill feature all together so the key on the keyboard is not shown at all and the overall behavior is the same as pre iOS 11?
ios swift ios11
ios swift ios11
asked Aug 2 '17 at 5:28
zumzumzumzum
5,388126799
5,388126799
Try setting the username and password field'stextContentType
property to.textContentType
- This should tell iOS 11 that your fields aren't username/password fields (even though they are) and prevent the accessory view being displayed; Something like ` self.passwordField.textContentType = .textContentType`
– Paulw11
Aug 2 '17 at 5:51
@zumzum did you get any solution . please share
– Nazmul Hasan
Aug 10 '17 at 19:57
2
This is a problem for me as well. The autocomplete feature appears on the fields for signing up, which isn't desired. I'd like them just to be on the fields for logging in. Strange stuff.
– Brad Root
Sep 7 '17 at 2:11
2
Looks like on iOS12 it appears again. How did you solve it there?
– dollar2048
Aug 1 '18 at 9:09
In iOS12, it still appears. Do you have any idea ?
– Emrah Akgül
Aug 8 '18 at 13:55
|
show 1 more comment
Try setting the username and password field'stextContentType
property to.textContentType
- This should tell iOS 11 that your fields aren't username/password fields (even though they are) and prevent the accessory view being displayed; Something like ` self.passwordField.textContentType = .textContentType`
– Paulw11
Aug 2 '17 at 5:51
@zumzum did you get any solution . please share
– Nazmul Hasan
Aug 10 '17 at 19:57
2
This is a problem for me as well. The autocomplete feature appears on the fields for signing up, which isn't desired. I'd like them just to be on the fields for logging in. Strange stuff.
– Brad Root
Sep 7 '17 at 2:11
2
Looks like on iOS12 it appears again. How did you solve it there?
– dollar2048
Aug 1 '18 at 9:09
In iOS12, it still appears. Do you have any idea ?
– Emrah Akgül
Aug 8 '18 at 13:55
Try setting the username and password field's
textContentType
property to .textContentType
- This should tell iOS 11 that your fields aren't username/password fields (even though they are) and prevent the accessory view being displayed; Something like ` self.passwordField.textContentType = .textContentType`– Paulw11
Aug 2 '17 at 5:51
Try setting the username and password field's
textContentType
property to .textContentType
- This should tell iOS 11 that your fields aren't username/password fields (even though they are) and prevent the accessory view being displayed; Something like ` self.passwordField.textContentType = .textContentType`– Paulw11
Aug 2 '17 at 5:51
@zumzum did you get any solution . please share
– Nazmul Hasan
Aug 10 '17 at 19:57
@zumzum did you get any solution . please share
– Nazmul Hasan
Aug 10 '17 at 19:57
2
2
This is a problem for me as well. The autocomplete feature appears on the fields for signing up, which isn't desired. I'd like them just to be on the fields for logging in. Strange stuff.
– Brad Root
Sep 7 '17 at 2:11
This is a problem for me as well. The autocomplete feature appears on the fields for signing up, which isn't desired. I'd like them just to be on the fields for logging in. Strange stuff.
– Brad Root
Sep 7 '17 at 2:11
2
2
Looks like on iOS12 it appears again. How did you solve it there?
– dollar2048
Aug 1 '18 at 9:09
Looks like on iOS12 it appears again. How did you solve it there?
– dollar2048
Aug 1 '18 at 9:09
In iOS12, it still appears. Do you have any idea ?
– Emrah Akgül
Aug 8 '18 at 13:55
In iOS12, it still appears. Do you have any idea ?
– Emrah Akgül
Aug 8 '18 at 13:55
|
show 1 more comment
14 Answers
14
active
oldest
votes
iOS 11 & 12 - Swift 4.2 (Updated):
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
passwordTextField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
// For more information see the explanation below.
emailTextField.textContentType = .init(rawValue: "")
passwordTextField.textContentType = .init(rawValue: "")
iOS 11 explanation:
Make sure you setup all of your UITextField
objects like this.
If you have for example an UITextField
object where the user must enter his email address and another one where the user must enter his password assign UITextContentType("")
to both of their textContentType
property. Otherwise it will not work and the autoFill accessory view will still be shown.
1
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
3
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a newUITextContentType
which is callednewPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!
– Bem
Sep 21 '18 at 11:50
1
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
|
show 9 more comments
The feature can be disabled by specifying a content type that is neither username nor password. For example, if the user should enter an email address, you could use
usernameTextField?.textContentType = .emailAddress
1
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
add a comment |
iOS 12 seems to recognise password textFields also by isSecureTextEntry
property and not just by textContentType
property, so making this accessory view disappear is not really possible unless you both set textContentType to nothing, and remove the secureEntry feature (and cause a security flaw in your app) which then prevents iOS 12 to recognise the textField as a password textField and show this annoying accessory view.
In my case the accessory caused a bug which made my app unresponsive when tapped (Which also got my app rejected in app review process). So I had to remove this feature. I didn't want to give on up this security feature so I had to solve things by my self.
The idea is to remove the secureEntry feature but add it by yourself manually. It did worked:
It can be done like that:
Swift 4 way:
First, as answered here, set textContentType
to nothing:
if #available(iOS 10.0, *)
passwordText.textContentType = UITextContentType("")
emailText.textContentType = UITextContentType("")
Than, declare a String variable which will later contain our textField real content:
var passwordValue = ""
Add a target to the passwordTextField, which will be called each time the textField content changes:
passwordText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
Now That's what will do the magic, declare the function that will handle the text replacements:
@objc func textFieldDidChange(_ textField: UITextField)
if textField.text!.count > 1
// User did copy & paste
if passwordValue.count == 0 // Pasted into an empty textField
passwordValue = String(textField.text!)
else // Pasted to a non empty textField
passwordValue += textField.text!.substring(from: passwordValue.count)
else
// User did input by keypad
if textField.text!.count > passwordValue.count // Added chars
passwordValue += String(textField.text!.last!)
else if textField.text!.count < passwordValue.count // Removed chars
passwordValue = String(passwordValue.dropLast())
self.passwordText.text = String(repeating: "•", count: self.passwordText.text!.count)
Finally, Set textField's autocorrectionType
to .no
to remove predictive text:
passwordText.autocorrectionType = .no
That's it, use passwordValue
to perform your login.
Hope it'll help someone.
UPDATE
It catches pasted values also, forgot to add it before.
1
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
add a comment |
You can add extension for UITextContentType like this
extension UITextContentType
public static let unspecified = UITextContentType("unspecified")
after that, you can use it
if #available(iOS 10.0, *)
passwordField.textContentType = .unspecified
add a comment |
A very simple approach in ios11 worked for me. Suppose your iboutlets are usernametextfield and passwordtextfield. In viewDidLoad() function of your viewcontroller that holds the both outlest use the following code
usernametextfield.textContentType = UITextContentType("")
passwordtextfield.textContentType = UITextContentType("")
After this you wont see autofill accessory option when you tap on your textfields.
add a comment |
Objective-C
if (@available(iOS 10, *))
self.tfEmail.textContentType = @"";
self.tfPassword.textContentType = @"";
This worked for me.
add a comment |
Autofill is by default enabled for users. iOS saves all passwords in the keychain and make them available in keyboard in your apps. UITextView
and UITextField
automatically considered for AutoFill password. you can disable by specifying a content type that is neither username nor password but if the content type info already stored in keychain it will show in the quick bar. so better to assign empty UITextContentType
type and it will not show quickbar.
Example:
if #available(iOS 10.0, *)
self.textField.textContentType = UITextContentType("")
else
// Fallback on earlier versions
add a comment |
Objective C version:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0"))
self.passwordTextField.textContentType = @"";
self.confirmPasswordTextField.textContentType = @"";
where
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
add a comment |
You could try different answers here that conclude its likely possible to remove accessoryview. But this leaves some bugs.
How to hide inputAccessoryView without dismissing keyboard
You could try to implement a custom keyboard perhaps, only for password fields. Also try to disable suggestions for your textfield, i think that also hides the accessoryView.
EDIT:
No answer on apple forums on same question as of yet. Also i couldnt find anything regarding this in official uitextfield documentation.
https://forums.developer.apple.com/thread/82442
add a comment |
You can "turn off" the username/password combo detection by assigning a dummy textContentType
to the password text field.
passwordFormField.textContentType = UITextContentType("dummy")
This turned off the key symbol for both the password field and the email field that preceded it, and in this way you don't use one of the predefined values and you avoid showing unrelated suggestions in the keyboard accessory view.
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12newPassword
UITextContentType . I don't know how to avoid this new behavior though.
– Miguel Cabeça
Aug 20 '18 at 7:28
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
add a comment |
self.passwordTextField.autocorrectionType = NO;
It does not seem to work, the keychain sign still there,
self.passwordTextField.textContentType = UITextContentTypeName;
The code above does work, but if the users set up their Apple ID account, Then, the name of the apple id will be display on the keyboard you cannot disable it by set autocorrectionType to No, not sure if Apple still refines this autofill feature, it's quite buggy right now.
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
add a comment |
This worked for ios 12 and 10:
if (@available(iOS 10, *))
passwordTextField.textContentType = UITextContentTypeStreetAddressLine2;
if (@available(iOS 12, *))
passwordTextField.textContentType = UITextContentTypeOneTimeCode;
add a comment |
in response to @Gal Shahar Answer.
iOS 12 recognise password textFields by isSecureTextEntry
property and not just by textContentType
property.
Way Around to bypass Auto-fill Suggestion.
- set
isSecureTextEntry
property to false.
self.passwordTextField.secureTextEntry = NO;
- Add a UITextField Delegate Method and enable the
isSecureTextEntry
property.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField == self.passwordTextField && !self.passwordTextField.secureTextEntry)
self.passwordTextField.secureTextEntry = YES;
return YES;
NOTE: -
Do NOT Use shouldBeginEditing
UITextField delegate method it Will Still show Auto-filling Suggestion.
Do NOT Use textFieldDidChange
UITextField delegate method it Will Auto-delete the first charachter as the it Will happen after the first charachter is displayed. And 'secureTextEntry' will empty the field.
add a comment |
This worked for me:
NOTE: try putting this code on the password, password confirm (if applicable), AND email textfields. I was not putting it on the email textfield and it was still popping up for the two password fields.
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
cell.textField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
cell.textField.textContentType = .init(rawValue: "")
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f45452170%2fios-11-disable-password-autofill-accessory-view-option%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
14 Answers
14
active
oldest
votes
14 Answers
14
active
oldest
votes
active
oldest
votes
active
oldest
votes
iOS 11 & 12 - Swift 4.2 (Updated):
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
passwordTextField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
// For more information see the explanation below.
emailTextField.textContentType = .init(rawValue: "")
passwordTextField.textContentType = .init(rawValue: "")
iOS 11 explanation:
Make sure you setup all of your UITextField
objects like this.
If you have for example an UITextField
object where the user must enter his email address and another one where the user must enter his password assign UITextContentType("")
to both of their textContentType
property. Otherwise it will not work and the autoFill accessory view will still be shown.
1
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
3
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a newUITextContentType
which is callednewPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!
– Bem
Sep 21 '18 at 11:50
1
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
|
show 9 more comments
iOS 11 & 12 - Swift 4.2 (Updated):
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
passwordTextField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
// For more information see the explanation below.
emailTextField.textContentType = .init(rawValue: "")
passwordTextField.textContentType = .init(rawValue: "")
iOS 11 explanation:
Make sure you setup all of your UITextField
objects like this.
If you have for example an UITextField
object where the user must enter his email address and another one where the user must enter his password assign UITextContentType("")
to both of their textContentType
property. Otherwise it will not work and the autoFill accessory view will still be shown.
1
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
3
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a newUITextContentType
which is callednewPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!
– Bem
Sep 21 '18 at 11:50
1
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
|
show 9 more comments
iOS 11 & 12 - Swift 4.2 (Updated):
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
passwordTextField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
// For more information see the explanation below.
emailTextField.textContentType = .init(rawValue: "")
passwordTextField.textContentType = .init(rawValue: "")
iOS 11 explanation:
Make sure you setup all of your UITextField
objects like this.
If you have for example an UITextField
object where the user must enter his email address and another one where the user must enter his password assign UITextContentType("")
to both of their textContentType
property. Otherwise it will not work and the autoFill accessory view will still be shown.
iOS 11 & 12 - Swift 4.2 (Updated):
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
passwordTextField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
// For more information see the explanation below.
emailTextField.textContentType = .init(rawValue: "")
passwordTextField.textContentType = .init(rawValue: "")
iOS 11 explanation:
Make sure you setup all of your UITextField
objects like this.
If you have for example an UITextField
object where the user must enter his email address and another one where the user must enter his password assign UITextContentType("")
to both of their textContentType
property. Otherwise it will not work and the autoFill accessory view will still be shown.
edited Oct 1 '18 at 9:11
answered Sep 28 '17 at 16:34
BemBem
807815
807815
1
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
3
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a newUITextContentType
which is callednewPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!
– Bem
Sep 21 '18 at 11:50
1
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
|
show 9 more comments
1
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
3
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a newUITextContentType
which is callednewPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!
– Bem
Sep 21 '18 at 11:50
1
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
1
1
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
It's available form iOS 10, not iOS 11.
– matm
Mar 12 '18 at 11:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
@matm you are right. Edited the answer. Thanks.
– Bem
Mar 14 '18 at 8:30
3
3
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
not working for iOS 12... Any solutions?
– Gal Shahar
Sep 20 '18 at 10:33
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a new
UITextContentType
which is called newPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!– Bem
Sep 21 '18 at 11:50
@GalShahar I can't test it right now but here is my suggestion: iOS 12 introduces a new
UITextContentType
which is called newPassword
(see: developer.apple.com/documentation/uikit/uitextcontenttype/…). Try setting the password text fields content type to this type. I guess iOS will not show the autofill accessory view then, because the user is forced to setup a new password and not use/access one that was setup before by using the autofill accessory view. Right now this is only theory. I'm not sure whether this will work, but let me know whether it does!– Bem
Sep 21 '18 at 11:50
1
1
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
This works great on iOS 12 for me
– Zach
Oct 22 '18 at 23:56
|
show 9 more comments
The feature can be disabled by specifying a content type that is neither username nor password. For example, if the user should enter an email address, you could use
usernameTextField?.textContentType = .emailAddress
1
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
add a comment |
The feature can be disabled by specifying a content type that is neither username nor password. For example, if the user should enter an email address, you could use
usernameTextField?.textContentType = .emailAddress
1
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
add a comment |
The feature can be disabled by specifying a content type that is neither username nor password. For example, if the user should enter an email address, you could use
usernameTextField?.textContentType = .emailAddress
The feature can be disabled by specifying a content type that is neither username nor password. For example, if the user should enter an email address, you could use
usernameTextField?.textContentType = .emailAddress
answered Aug 29 '17 at 16:42
gebirgsbärbelgebirgsbärbel
1,39211631
1,39211631
1
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
add a comment |
1
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
1
1
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
Interestingly I have an email address field above a password field, and the email address field offers an auto-complete.
– Brad Root
Sep 7 '17 at 2:10
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
@BradRoot change your password field textContentype too! if your email is already saved in keychain then it will show the info in quickbar, so better to user .nickname or try this code if #available(iOS 10.0, *) self.passwordTextField.textContentType = UITextContentType.init(rawValue: "") else // Fallback on earlier versions
– Sahil
Sep 28 '17 at 5:48
add a comment |
iOS 12 seems to recognise password textFields also by isSecureTextEntry
property and not just by textContentType
property, so making this accessory view disappear is not really possible unless you both set textContentType to nothing, and remove the secureEntry feature (and cause a security flaw in your app) which then prevents iOS 12 to recognise the textField as a password textField and show this annoying accessory view.
In my case the accessory caused a bug which made my app unresponsive when tapped (Which also got my app rejected in app review process). So I had to remove this feature. I didn't want to give on up this security feature so I had to solve things by my self.
The idea is to remove the secureEntry feature but add it by yourself manually. It did worked:
It can be done like that:
Swift 4 way:
First, as answered here, set textContentType
to nothing:
if #available(iOS 10.0, *)
passwordText.textContentType = UITextContentType("")
emailText.textContentType = UITextContentType("")
Than, declare a String variable which will later contain our textField real content:
var passwordValue = ""
Add a target to the passwordTextField, which will be called each time the textField content changes:
passwordText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
Now That's what will do the magic, declare the function that will handle the text replacements:
@objc func textFieldDidChange(_ textField: UITextField)
if textField.text!.count > 1
// User did copy & paste
if passwordValue.count == 0 // Pasted into an empty textField
passwordValue = String(textField.text!)
else // Pasted to a non empty textField
passwordValue += textField.text!.substring(from: passwordValue.count)
else
// User did input by keypad
if textField.text!.count > passwordValue.count // Added chars
passwordValue += String(textField.text!.last!)
else if textField.text!.count < passwordValue.count // Removed chars
passwordValue = String(passwordValue.dropLast())
self.passwordText.text = String(repeating: "•", count: self.passwordText.text!.count)
Finally, Set textField's autocorrectionType
to .no
to remove predictive text:
passwordText.autocorrectionType = .no
That's it, use passwordValue
to perform your login.
Hope it'll help someone.
UPDATE
It catches pasted values also, forgot to add it before.
1
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
add a comment |
iOS 12 seems to recognise password textFields also by isSecureTextEntry
property and not just by textContentType
property, so making this accessory view disappear is not really possible unless you both set textContentType to nothing, and remove the secureEntry feature (and cause a security flaw in your app) which then prevents iOS 12 to recognise the textField as a password textField and show this annoying accessory view.
In my case the accessory caused a bug which made my app unresponsive when tapped (Which also got my app rejected in app review process). So I had to remove this feature. I didn't want to give on up this security feature so I had to solve things by my self.
The idea is to remove the secureEntry feature but add it by yourself manually. It did worked:
It can be done like that:
Swift 4 way:
First, as answered here, set textContentType
to nothing:
if #available(iOS 10.0, *)
passwordText.textContentType = UITextContentType("")
emailText.textContentType = UITextContentType("")
Than, declare a String variable which will later contain our textField real content:
var passwordValue = ""
Add a target to the passwordTextField, which will be called each time the textField content changes:
passwordText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
Now That's what will do the magic, declare the function that will handle the text replacements:
@objc func textFieldDidChange(_ textField: UITextField)
if textField.text!.count > 1
// User did copy & paste
if passwordValue.count == 0 // Pasted into an empty textField
passwordValue = String(textField.text!)
else // Pasted to a non empty textField
passwordValue += textField.text!.substring(from: passwordValue.count)
else
// User did input by keypad
if textField.text!.count > passwordValue.count // Added chars
passwordValue += String(textField.text!.last!)
else if textField.text!.count < passwordValue.count // Removed chars
passwordValue = String(passwordValue.dropLast())
self.passwordText.text = String(repeating: "•", count: self.passwordText.text!.count)
Finally, Set textField's autocorrectionType
to .no
to remove predictive text:
passwordText.autocorrectionType = .no
That's it, use passwordValue
to perform your login.
Hope it'll help someone.
UPDATE
It catches pasted values also, forgot to add it before.
1
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
add a comment |
iOS 12 seems to recognise password textFields also by isSecureTextEntry
property and not just by textContentType
property, so making this accessory view disappear is not really possible unless you both set textContentType to nothing, and remove the secureEntry feature (and cause a security flaw in your app) which then prevents iOS 12 to recognise the textField as a password textField and show this annoying accessory view.
In my case the accessory caused a bug which made my app unresponsive when tapped (Which also got my app rejected in app review process). So I had to remove this feature. I didn't want to give on up this security feature so I had to solve things by my self.
The idea is to remove the secureEntry feature but add it by yourself manually. It did worked:
It can be done like that:
Swift 4 way:
First, as answered here, set textContentType
to nothing:
if #available(iOS 10.0, *)
passwordText.textContentType = UITextContentType("")
emailText.textContentType = UITextContentType("")
Than, declare a String variable which will later contain our textField real content:
var passwordValue = ""
Add a target to the passwordTextField, which will be called each time the textField content changes:
passwordText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
Now That's what will do the magic, declare the function that will handle the text replacements:
@objc func textFieldDidChange(_ textField: UITextField)
if textField.text!.count > 1
// User did copy & paste
if passwordValue.count == 0 // Pasted into an empty textField
passwordValue = String(textField.text!)
else // Pasted to a non empty textField
passwordValue += textField.text!.substring(from: passwordValue.count)
else
// User did input by keypad
if textField.text!.count > passwordValue.count // Added chars
passwordValue += String(textField.text!.last!)
else if textField.text!.count < passwordValue.count // Removed chars
passwordValue = String(passwordValue.dropLast())
self.passwordText.text = String(repeating: "•", count: self.passwordText.text!.count)
Finally, Set textField's autocorrectionType
to .no
to remove predictive text:
passwordText.autocorrectionType = .no
That's it, use passwordValue
to perform your login.
Hope it'll help someone.
UPDATE
It catches pasted values also, forgot to add it before.
iOS 12 seems to recognise password textFields also by isSecureTextEntry
property and not just by textContentType
property, so making this accessory view disappear is not really possible unless you both set textContentType to nothing, and remove the secureEntry feature (and cause a security flaw in your app) which then prevents iOS 12 to recognise the textField as a password textField and show this annoying accessory view.
In my case the accessory caused a bug which made my app unresponsive when tapped (Which also got my app rejected in app review process). So I had to remove this feature. I didn't want to give on up this security feature so I had to solve things by my self.
The idea is to remove the secureEntry feature but add it by yourself manually. It did worked:
It can be done like that:
Swift 4 way:
First, as answered here, set textContentType
to nothing:
if #available(iOS 10.0, *)
passwordText.textContentType = UITextContentType("")
emailText.textContentType = UITextContentType("")
Than, declare a String variable which will later contain our textField real content:
var passwordValue = ""
Add a target to the passwordTextField, which will be called each time the textField content changes:
passwordText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
Now That's what will do the magic, declare the function that will handle the text replacements:
@objc func textFieldDidChange(_ textField: UITextField)
if textField.text!.count > 1
// User did copy & paste
if passwordValue.count == 0 // Pasted into an empty textField
passwordValue = String(textField.text!)
else // Pasted to a non empty textField
passwordValue += textField.text!.substring(from: passwordValue.count)
else
// User did input by keypad
if textField.text!.count > passwordValue.count // Added chars
passwordValue += String(textField.text!.last!)
else if textField.text!.count < passwordValue.count // Removed chars
passwordValue = String(passwordValue.dropLast())
self.passwordText.text = String(repeating: "•", count: self.passwordText.text!.count)
Finally, Set textField's autocorrectionType
to .no
to remove predictive text:
passwordText.autocorrectionType = .no
That's it, use passwordValue
to perform your login.
Hope it'll help someone.
UPDATE
It catches pasted values also, forgot to add it before.
edited Sep 28 '18 at 17:24
answered Sep 20 '18 at 14:04
Gal ShaharGal Shahar
296312
296312
1
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
add a comment |
1
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
1
1
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
Super! Nice hack buddy! shame that iOS makes us hack rather than providing cleaner ways to do the most basic things. This should be the accepted answer.
– Josh
Sep 24 '18 at 12:50
add a comment |
You can add extension for UITextContentType like this
extension UITextContentType
public static let unspecified = UITextContentType("unspecified")
after that, you can use it
if #available(iOS 10.0, *)
passwordField.textContentType = .unspecified
add a comment |
You can add extension for UITextContentType like this
extension UITextContentType
public static let unspecified = UITextContentType("unspecified")
after that, you can use it
if #available(iOS 10.0, *)
passwordField.textContentType = .unspecified
add a comment |
You can add extension for UITextContentType like this
extension UITextContentType
public static let unspecified = UITextContentType("unspecified")
after that, you can use it
if #available(iOS 10.0, *)
passwordField.textContentType = .unspecified
You can add extension for UITextContentType like this
extension UITextContentType
public static let unspecified = UITextContentType("unspecified")
after that, you can use it
if #available(iOS 10.0, *)
passwordField.textContentType = .unspecified
answered Nov 14 '17 at 2:33
Mikhail ZinovMikhail Zinov
12618
12618
add a comment |
add a comment |
A very simple approach in ios11 worked for me. Suppose your iboutlets are usernametextfield and passwordtextfield. In viewDidLoad() function of your viewcontroller that holds the both outlest use the following code
usernametextfield.textContentType = UITextContentType("")
passwordtextfield.textContentType = UITextContentType("")
After this you wont see autofill accessory option when you tap on your textfields.
add a comment |
A very simple approach in ios11 worked for me. Suppose your iboutlets are usernametextfield and passwordtextfield. In viewDidLoad() function of your viewcontroller that holds the both outlest use the following code
usernametextfield.textContentType = UITextContentType("")
passwordtextfield.textContentType = UITextContentType("")
After this you wont see autofill accessory option when you tap on your textfields.
add a comment |
A very simple approach in ios11 worked for me. Suppose your iboutlets are usernametextfield and passwordtextfield. In viewDidLoad() function of your viewcontroller that holds the both outlest use the following code
usernametextfield.textContentType = UITextContentType("")
passwordtextfield.textContentType = UITextContentType("")
After this you wont see autofill accessory option when you tap on your textfields.
A very simple approach in ios11 worked for me. Suppose your iboutlets are usernametextfield and passwordtextfield. In viewDidLoad() function of your viewcontroller that holds the both outlest use the following code
usernametextfield.textContentType = UITextContentType("")
passwordtextfield.textContentType = UITextContentType("")
After this you wont see autofill accessory option when you tap on your textfields.
answered Oct 3 '17 at 5:42
AmmadAmmad
24147
24147
add a comment |
add a comment |
Objective-C
if (@available(iOS 10, *))
self.tfEmail.textContentType = @"";
self.tfPassword.textContentType = @"";
This worked for me.
add a comment |
Objective-C
if (@available(iOS 10, *))
self.tfEmail.textContentType = @"";
self.tfPassword.textContentType = @"";
This worked for me.
add a comment |
Objective-C
if (@available(iOS 10, *))
self.tfEmail.textContentType = @"";
self.tfPassword.textContentType = @"";
This worked for me.
Objective-C
if (@available(iOS 10, *))
self.tfEmail.textContentType = @"";
self.tfPassword.textContentType = @"";
This worked for me.
answered Feb 28 '18 at 18:52
Matheus DomingosMatheus Domingos
48157
48157
add a comment |
add a comment |
Autofill is by default enabled for users. iOS saves all passwords in the keychain and make them available in keyboard in your apps. UITextView
and UITextField
automatically considered for AutoFill password. you can disable by specifying a content type that is neither username nor password but if the content type info already stored in keychain it will show in the quick bar. so better to assign empty UITextContentType
type and it will not show quickbar.
Example:
if #available(iOS 10.0, *)
self.textField.textContentType = UITextContentType("")
else
// Fallback on earlier versions
add a comment |
Autofill is by default enabled for users. iOS saves all passwords in the keychain and make them available in keyboard in your apps. UITextView
and UITextField
automatically considered for AutoFill password. you can disable by specifying a content type that is neither username nor password but if the content type info already stored in keychain it will show in the quick bar. so better to assign empty UITextContentType
type and it will not show quickbar.
Example:
if #available(iOS 10.0, *)
self.textField.textContentType = UITextContentType("")
else
// Fallback on earlier versions
add a comment |
Autofill is by default enabled for users. iOS saves all passwords in the keychain and make them available in keyboard in your apps. UITextView
and UITextField
automatically considered for AutoFill password. you can disable by specifying a content type that is neither username nor password but if the content type info already stored in keychain it will show in the quick bar. so better to assign empty UITextContentType
type and it will not show quickbar.
Example:
if #available(iOS 10.0, *)
self.textField.textContentType = UITextContentType("")
else
// Fallback on earlier versions
Autofill is by default enabled for users. iOS saves all passwords in the keychain and make them available in keyboard in your apps. UITextView
and UITextField
automatically considered for AutoFill password. you can disable by specifying a content type that is neither username nor password but if the content type info already stored in keychain it will show in the quick bar. so better to assign empty UITextContentType
type and it will not show quickbar.
Example:
if #available(iOS 10.0, *)
self.textField.textContentType = UITextContentType("")
else
// Fallback on earlier versions
edited Sep 28 '17 at 6:43
answered Sep 28 '17 at 6:29
SahilSahil
6,56431625
6,56431625
add a comment |
add a comment |
Objective C version:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0"))
self.passwordTextField.textContentType = @"";
self.confirmPasswordTextField.textContentType = @"";
where
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
add a comment |
Objective C version:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0"))
self.passwordTextField.textContentType = @"";
self.confirmPasswordTextField.textContentType = @"";
where
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
add a comment |
Objective C version:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0"))
self.passwordTextField.textContentType = @"";
self.confirmPasswordTextField.textContentType = @"";
where
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
Objective C version:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0"))
self.passwordTextField.textContentType = @"";
self.confirmPasswordTextField.textContentType = @"";
where
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
answered Jan 9 '18 at 11:23
wzbozonwzbozon
8,93655960
8,93655960
add a comment |
add a comment |
You could try different answers here that conclude its likely possible to remove accessoryview. But this leaves some bugs.
How to hide inputAccessoryView without dismissing keyboard
You could try to implement a custom keyboard perhaps, only for password fields. Also try to disable suggestions for your textfield, i think that also hides the accessoryView.
EDIT:
No answer on apple forums on same question as of yet. Also i couldnt find anything regarding this in official uitextfield documentation.
https://forums.developer.apple.com/thread/82442
add a comment |
You could try different answers here that conclude its likely possible to remove accessoryview. But this leaves some bugs.
How to hide inputAccessoryView without dismissing keyboard
You could try to implement a custom keyboard perhaps, only for password fields. Also try to disable suggestions for your textfield, i think that also hides the accessoryView.
EDIT:
No answer on apple forums on same question as of yet. Also i couldnt find anything regarding this in official uitextfield documentation.
https://forums.developer.apple.com/thread/82442
add a comment |
You could try different answers here that conclude its likely possible to remove accessoryview. But this leaves some bugs.
How to hide inputAccessoryView without dismissing keyboard
You could try to implement a custom keyboard perhaps, only for password fields. Also try to disable suggestions for your textfield, i think that also hides the accessoryView.
EDIT:
No answer on apple forums on same question as of yet. Also i couldnt find anything regarding this in official uitextfield documentation.
https://forums.developer.apple.com/thread/82442
You could try different answers here that conclude its likely possible to remove accessoryview. But this leaves some bugs.
How to hide inputAccessoryView without dismissing keyboard
You could try to implement a custom keyboard perhaps, only for password fields. Also try to disable suggestions for your textfield, i think that also hides the accessoryView.
EDIT:
No answer on apple forums on same question as of yet. Also i couldnt find anything regarding this in official uitextfield documentation.
https://forums.developer.apple.com/thread/82442
edited Aug 2 '17 at 8:35
Nazmul Hasan
5,44443452
5,44443452
answered Aug 2 '17 at 5:33
RishabhRishabh
321212
321212
add a comment |
add a comment |
You can "turn off" the username/password combo detection by assigning a dummy textContentType
to the password text field.
passwordFormField.textContentType = UITextContentType("dummy")
This turned off the key symbol for both the password field and the email field that preceded it, and in this way you don't use one of the predefined values and you avoid showing unrelated suggestions in the keyboard accessory view.
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12newPassword
UITextContentType . I don't know how to avoid this new behavior though.
– Miguel Cabeça
Aug 20 '18 at 7:28
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
add a comment |
You can "turn off" the username/password combo detection by assigning a dummy textContentType
to the password text field.
passwordFormField.textContentType = UITextContentType("dummy")
This turned off the key symbol for both the password field and the email field that preceded it, and in this way you don't use one of the predefined values and you avoid showing unrelated suggestions in the keyboard accessory view.
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12newPassword
UITextContentType . I don't know how to avoid this new behavior though.
– Miguel Cabeça
Aug 20 '18 at 7:28
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
add a comment |
You can "turn off" the username/password combo detection by assigning a dummy textContentType
to the password text field.
passwordFormField.textContentType = UITextContentType("dummy")
This turned off the key symbol for both the password field and the email field that preceded it, and in this way you don't use one of the predefined values and you avoid showing unrelated suggestions in the keyboard accessory view.
You can "turn off" the username/password combo detection by assigning a dummy textContentType
to the password text field.
passwordFormField.textContentType = UITextContentType("dummy")
This turned off the key symbol for both the password field and the email field that preceded it, and in this way you don't use one of the predefined values and you avoid showing unrelated suggestions in the keyboard accessory view.
answered Sep 27 '17 at 13:19
Miguel CabeçaMiguel Cabeça
411
411
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12newPassword
UITextContentType . I don't know how to avoid this new behavior though.
– Miguel Cabeça
Aug 20 '18 at 7:28
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
add a comment |
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12newPassword
UITextContentType . I don't know how to avoid this new behavior though.
– Miguel Cabeça
Aug 20 '18 at 7:28
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
Does this still work on the latest iOS 12 beta for you?
– pfandrade
Aug 9 '18 at 11:22
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12
newPassword
UITextContentType . I don't know how to avoid this new behavior though.– Miguel Cabeça
Aug 20 '18 at 7:28
No it does not. On iOS 12 it detects this field as a new password field and suggests a new strong password (new iOS 12 feature). I actually want this behavior in my case, so I'm tagging this password field with the new iOS 12
newPassword
UITextContentType . I don't know how to avoid this new behavior though.– Miguel Cabeça
Aug 20 '18 at 7:28
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
For iOS 12 beta, if use: textContentType = UITextContentType.oneTimeCode. Then, it doesn't have the keychain on the keyboard. It seems to work fine for me without any side effects. If you use .newPassword, that also works, but then it asks you to save the password once you finish with the password.
– Daniel Jones
Sep 5 '18 at 21:22
add a comment |
self.passwordTextField.autocorrectionType = NO;
It does not seem to work, the keychain sign still there,
self.passwordTextField.textContentType = UITextContentTypeName;
The code above does work, but if the users set up their Apple ID account, Then, the name of the apple id will be display on the keyboard you cannot disable it by set autocorrectionType to No, not sure if Apple still refines this autofill feature, it's quite buggy right now.
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
add a comment |
self.passwordTextField.autocorrectionType = NO;
It does not seem to work, the keychain sign still there,
self.passwordTextField.textContentType = UITextContentTypeName;
The code above does work, but if the users set up their Apple ID account, Then, the name of the apple id will be display on the keyboard you cannot disable it by set autocorrectionType to No, not sure if Apple still refines this autofill feature, it's quite buggy right now.
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
add a comment |
self.passwordTextField.autocorrectionType = NO;
It does not seem to work, the keychain sign still there,
self.passwordTextField.textContentType = UITextContentTypeName;
The code above does work, but if the users set up their Apple ID account, Then, the name of the apple id will be display on the keyboard you cannot disable it by set autocorrectionType to No, not sure if Apple still refines this autofill feature, it's quite buggy right now.
self.passwordTextField.autocorrectionType = NO;
It does not seem to work, the keychain sign still there,
self.passwordTextField.textContentType = UITextContentTypeName;
The code above does work, but if the users set up their Apple ID account, Then, the name of the apple id will be display on the keyboard you cannot disable it by set autocorrectionType to No, not sure if Apple still refines this autofill feature, it's quite buggy right now.
edited Dec 13 '18 at 7:28
Ankit Jayaswal
3,2312529
3,2312529
answered Aug 4 '17 at 3:38
Roger HanRoger Han
112
112
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
add a comment |
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
This type of 'answer' should be reserved for the comments section, as it doesn't give an actual answer or link to any reference documentation from apple etc. Welcome to SO though!
– stktrc
Aug 4 '17 at 4:00
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
no solution yet. Nothing listed here worked well for me.
– zumzum
Aug 15 '17 at 16:46
add a comment |
This worked for ios 12 and 10:
if (@available(iOS 10, *))
passwordTextField.textContentType = UITextContentTypeStreetAddressLine2;
if (@available(iOS 12, *))
passwordTextField.textContentType = UITextContentTypeOneTimeCode;
add a comment |
This worked for ios 12 and 10:
if (@available(iOS 10, *))
passwordTextField.textContentType = UITextContentTypeStreetAddressLine2;
if (@available(iOS 12, *))
passwordTextField.textContentType = UITextContentTypeOneTimeCode;
add a comment |
This worked for ios 12 and 10:
if (@available(iOS 10, *))
passwordTextField.textContentType = UITextContentTypeStreetAddressLine2;
if (@available(iOS 12, *))
passwordTextField.textContentType = UITextContentTypeOneTimeCode;
This worked for ios 12 and 10:
if (@available(iOS 10, *))
passwordTextField.textContentType = UITextContentTypeStreetAddressLine2;
if (@available(iOS 12, *))
passwordTextField.textContentType = UITextContentTypeOneTimeCode;
edited Feb 4 at 12:59
answered Dec 26 '18 at 13:29
no_fateno_fate
365212
365212
add a comment |
add a comment |
in response to @Gal Shahar Answer.
iOS 12 recognise password textFields by isSecureTextEntry
property and not just by textContentType
property.
Way Around to bypass Auto-fill Suggestion.
- set
isSecureTextEntry
property to false.
self.passwordTextField.secureTextEntry = NO;
- Add a UITextField Delegate Method and enable the
isSecureTextEntry
property.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField == self.passwordTextField && !self.passwordTextField.secureTextEntry)
self.passwordTextField.secureTextEntry = YES;
return YES;
NOTE: -
Do NOT Use shouldBeginEditing
UITextField delegate method it Will Still show Auto-filling Suggestion.
Do NOT Use textFieldDidChange
UITextField delegate method it Will Auto-delete the first charachter as the it Will happen after the first charachter is displayed. And 'secureTextEntry' will empty the field.
add a comment |
in response to @Gal Shahar Answer.
iOS 12 recognise password textFields by isSecureTextEntry
property and not just by textContentType
property.
Way Around to bypass Auto-fill Suggestion.
- set
isSecureTextEntry
property to false.
self.passwordTextField.secureTextEntry = NO;
- Add a UITextField Delegate Method and enable the
isSecureTextEntry
property.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField == self.passwordTextField && !self.passwordTextField.secureTextEntry)
self.passwordTextField.secureTextEntry = YES;
return YES;
NOTE: -
Do NOT Use shouldBeginEditing
UITextField delegate method it Will Still show Auto-filling Suggestion.
Do NOT Use textFieldDidChange
UITextField delegate method it Will Auto-delete the first charachter as the it Will happen after the first charachter is displayed. And 'secureTextEntry' will empty the field.
add a comment |
in response to @Gal Shahar Answer.
iOS 12 recognise password textFields by isSecureTextEntry
property and not just by textContentType
property.
Way Around to bypass Auto-fill Suggestion.
- set
isSecureTextEntry
property to false.
self.passwordTextField.secureTextEntry = NO;
- Add a UITextField Delegate Method and enable the
isSecureTextEntry
property.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField == self.passwordTextField && !self.passwordTextField.secureTextEntry)
self.passwordTextField.secureTextEntry = YES;
return YES;
NOTE: -
Do NOT Use shouldBeginEditing
UITextField delegate method it Will Still show Auto-filling Suggestion.
Do NOT Use textFieldDidChange
UITextField delegate method it Will Auto-delete the first charachter as the it Will happen after the first charachter is displayed. And 'secureTextEntry' will empty the field.
in response to @Gal Shahar Answer.
iOS 12 recognise password textFields by isSecureTextEntry
property and not just by textContentType
property.
Way Around to bypass Auto-fill Suggestion.
- set
isSecureTextEntry
property to false.
self.passwordTextField.secureTextEntry = NO;
- Add a UITextField Delegate Method and enable the
isSecureTextEntry
property.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField == self.passwordTextField && !self.passwordTextField.secureTextEntry)
self.passwordTextField.secureTextEntry = YES;
return YES;
NOTE: -
Do NOT Use shouldBeginEditing
UITextField delegate method it Will Still show Auto-filling Suggestion.
Do NOT Use textFieldDidChange
UITextField delegate method it Will Auto-delete the first charachter as the it Will happen after the first charachter is displayed. And 'secureTextEntry' will empty the field.
answered yesterday
ashishashish
10615
10615
add a comment |
add a comment |
This worked for me:
NOTE: try putting this code on the password, password confirm (if applicable), AND email textfields. I was not putting it on the email textfield and it was still popping up for the two password fields.
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
cell.textField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
cell.textField.textContentType = .init(rawValue: "")
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
add a comment |
This worked for me:
NOTE: try putting this code on the password, password confirm (if applicable), AND email textfields. I was not putting it on the email textfield and it was still popping up for the two password fields.
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
cell.textField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
cell.textField.textContentType = .init(rawValue: "")
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
add a comment |
This worked for me:
NOTE: try putting this code on the password, password confirm (if applicable), AND email textfields. I was not putting it on the email textfield and it was still popping up for the two password fields.
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
cell.textField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
cell.textField.textContentType = .init(rawValue: "")
This worked for me:
NOTE: try putting this code on the password, password confirm (if applicable), AND email textfields. I was not putting it on the email textfield and it was still popping up for the two password fields.
if #available(iOS 12, *)
// iOS 12: Not the best solution, but it works.
cell.textField.textContentType = .oneTimeCode
else
// iOS 11: Disables the autofill accessory view.
cell.textField.textContentType = .init(rawValue: "")
answered Feb 1 at 17:47
Paul LehnPaul Lehn
1,7031422
1,7031422
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
add a comment |
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
This is the same as Bem’s answer.
– ayaio
Feb 1 at 19:03
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f45452170%2fios-11-disable-password-autofill-accessory-view-option%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Try setting the username and password field's
textContentType
property to.textContentType
- This should tell iOS 11 that your fields aren't username/password fields (even though they are) and prevent the accessory view being displayed; Something like ` self.passwordField.textContentType = .textContentType`– Paulw11
Aug 2 '17 at 5:51
@zumzum did you get any solution . please share
– Nazmul Hasan
Aug 10 '17 at 19:57
2
This is a problem for me as well. The autocomplete feature appears on the fields for signing up, which isn't desired. I'd like them just to be on the fields for logging in. Strange stuff.
– Brad Root
Sep 7 '17 at 2:11
2
Looks like on iOS12 it appears again. How did you solve it there?
– dollar2048
Aug 1 '18 at 9:09
In iOS12, it still appears. Do you have any idea ?
– Emrah Akgül
Aug 8 '18 at 13:55