iOS 11禁用密码自动填充附件查看选项?

问题描述:

截至目前,我想选择退出iOS 11给出的新选项,即在应用程序中建议密码。当我在iOS 11上运行应用程序时,我在键盘上获得了自动填充选项,并且我的用户名和密码textfield甚至没有显示出来。iOS 11禁用密码自动填充附件查看选项?

所以,我的问题是,我怎么能一起禁用新的密码自动填充功能,所以键盘上的按键根本没有显示,整体行为与iOS 11前一样?

enter image description here

+0

尝试将用户名和密码字段的textContentType属性设置为'.textContentType' - 这应该告诉iOS 11您的字段*不是*用户名/密码字段(尽管它们是)并且防止显示附件视图;类似于'self.passwordField.textContentType = .textContentType' – Paulw11

+0

@zumzum你有没有得到任何解决方案。请分享 –

+2

这对我来说也是一个问题。自动填充功能出现在注册的字段中,这是不需要的。我希望他们只是在登录领域。奇怪的东西。 –

您可以尝试在这里不同的答案在于结束其可能能够移除accessoryView的。但是这留下了一些错误。

How to hide inputAccessoryView without dismissing keyboard

你可以尝试也许是为了实现自定义键盘,只为密码字段。也尝试禁用您的文本框的建议,我认为这也隐藏了accessoryView。

编辑: 苹果论坛上没有答案在同一个问题上的。此外,我不能在官方uitextfield文档中找到任何关于此的信息。

https://forums.developer.apple.com/thread/82442

self.passwordTextField.autocorrectionType = NO;似乎没有工作,钥匙扣的迹象仍然存在,

self.passwordTextField.textContentType = UITextContentTypeName;

上面的代码确实有效,但是如果用户设置了他们的Apple ID帐户,那么Apple ID的名称将显示在键盘上,您不能通过将autocorrectionType设置为No来禁用它,不确定苹果是否仍然完善这个自动填充功能,现在它的错误率很高

+0

这种'答案'应该保留给评论部分,因为它没有提供任何实际的答案或链接到任何苹果等参考文件。欢迎来到SO虽然! – crashlog

+0

尚无解决方案。这里列出的任何东西都不适合我。 – zumzum

该功能可以通过指定既不是用户名也不是密码的内容类型来禁用。例如,如果用户要输入电子邮件地址,你可以使用

usernameTextField?.textContentType = .emailAddress 
+0

有趣的是,我在密码字段上方有一个电子邮件地址字段,并且电子邮件地址字段提供了自动填写。 –

+0

@BradRoot更改您的密码字段textContentype呢!如果您的电子邮件已存储在钥匙串中,那么它将在快捷栏中显示信息,所以对用户.nickname更好,或者如果#available(iOS 10.0,*)尝试此代码{ self.passwordTextField.textContentType = UITextContentType.init(rawValue: “”) }其他{ //回退较早版本 } – Sahil

通过分配虚拟textContentType到密码文本字段可以“关闭”用户名/密码组合检测。

passwordFormField.textContentType = UITextContentType("dummy") 

该关闭的关键符号两个密码字段和它之前的电子邮件领域,这样你不使用一个预定义值,你避免显示在键盘附件无关建议视图。

为用户默认启用自动填充功能。 iOS将钥匙串中的所有密码保存在应用程序的键盘中。 UITextViewUITextField自动考虑自动填充密码。您可以通过指定既不是用户名也不是密码的内容类型来禁用,但如果内容类型信息已存储在钥匙串中,它将显示在快捷栏中。所以最好分配空的UITextContentType类型,它不会显示快捷栏。

例子:

if #available(iOS 10.0, *) { 
    self.textField.textContentType = UITextContentType("") 
    } else { 
    // Fallback on earlier versions 
} 

这为我工作:

 if #available(iOS 11, *) { 
      // Disables the password autoFill accessory view. 
      textField.textContentType = UITextContentType("") 
    } 

确保你安装所有的UITextField对象是这样的。例如,如果您有一个UITextField对象,其中用户必须输入他的电子邮件地址,而另一个用户必须输入密码才能将UITextContentType("")分配给其两个textContentType属性。否则,它将无法工作,并且自动填充配件视图仍将显示。

ios11中的一个非常简单的方法为我工作。假设你的iboutlets是usernametextfield和passwordtextfield。您的视图控制器的viewDidLoad方法中的()函数,它拥有两个outlest使用下面的代码

usernametextfield.textContentType = UITextContentType("") 
passwordtextfield.textContentType = UITextContentType("") 

此之后,你不会看到自动填写附件选项,当你在你的文本框的挖掘。

你可以这样

extension UITextContentType { 
    public static let unspecified = UITextContentType("unspecified") 
} 

为UITextContentType添加扩展,你可以用它

if #available(iOS 10.0, *) { 
    passwordField.textContentType = .unspecified 
} 

目标C版本:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { 
    self.passwordTextField.textContentType = @""; 
    self.confirmPasswordTextField.textContentType = @""; 
} 

其中

#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的

if (@available(iOS 10, *)){ 
    self.tfEmail.textContentType = @""; 
    self.tfPassword.textContentType = @""; 
} 

这为我工作。