2017-08-02 50 views
28

截至目前,我想選擇退出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

這對我來說也是一個問題。自動填充功能出現在註冊的字段中,這是不需要的。我希望他們只是在登錄領域。奇怪的東西。 –

回答

0

您可以嘗試在這裏不同的答案在於結束其可能能夠移除accessoryView的。但是這留下了一些錯誤。

How to hide inputAccessoryView without dismissing keyboard

你可以嘗試也許是爲了實現自定義鍵盤,只爲密碼字段。也嘗試禁用您的文本框的建議,我認爲這也隱藏了accessoryView。

編輯: 蘋果論壇上沒有答案在同一個問題上的。此外,我不能在官方uitextfield文檔中找到任何關於此的信息。

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

0

self.passwordTextField.autocorrectionType = NO;似乎沒有工作,鑰匙扣的跡象仍然存在,

self.passwordTextField.textContentType = UITextContentTypeName;

上面的代碼確實有效,但是如果用戶設置了他們的Apple ID帳戶,那麼Apple ID的名稱將顯示在鍵盤上,您不能通過將autocorrectionType設置爲No來禁用它,不確定蘋果是否仍然完善這個自動填充功能,現在它的錯誤率很高

+0

這種'答案'應該保留給評論部分,因爲它沒有提供任何實際的答案或鏈接到任何蘋果等參考文件。歡迎來到SO雖然! – crashlog

+0

尚無解決方案。這裏列出的任何東西都不適合我。 – zumzum

5

該功能可以通過指定既不是用戶名也不是密碼的內容類型來禁用。例如,如果用戶要輸入電子郵件地址,你可以使用

usernameTextField?.textContentType = .emailAddress 
+0

有趣的是,我在密碼字段上方有一個電子郵件地址字段,並且電子郵件地址字段提供了自動填寫。 –

+0

@BradRoot更改您的密碼字段textContentype呢!如果您的電子郵件已存儲在鑰匙串中,那麼它將在快捷欄中顯示信息,所以對用戶.nickname更好,或者如果#available(iOS 10.0,*)嘗試此代碼{ self.passwordTextField.textContentType = UITextContentType.init(rawValue: 「」) }其他{ //回退較早版本 } – Sahil

0

通過分配虛擬textContentType到密碼文本字段可以「關閉」用戶名/密碼組合檢測。

passwordFormField.textContentType = UITextContentType("dummy") 

該關閉的關鍵符號兩個密碼字段和它之前的電子郵件領域,這樣你不使用一個預定義值,你避免顯示在鍵盤附件無關建議視圖。

1

爲用戶默認啓用自動填充功能。 iOS將鑰匙串中的所有密碼保存在應用程序的鍵盤中。 UITextViewUITextField自動考慮自動填充密碼。您可以通過指定既不是用戶名也不是密碼的內容類型來禁用,但如果內容類型信息已存儲在鑰匙串中,它將顯示在快捷欄中。所以最好分配空的UITextContentType類型,它不會顯示快捷欄。

例子:

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

這爲我工作:

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

確保你安裝所有的UITextField對象是這樣的。例如,如果您有一個UITextField對象,其中用戶必須輸入他的電子郵件地址,而另一個用戶必須輸入密碼才能將UITextContentType("")分配給其兩個textContentType屬性。否則,它將無法工作,並且自動填充配件視圖仍將顯示。

5

ios11中的一個非常簡單的方法爲我工作。假設你的iboutlets是usernametextfield和passwordtextfield。您的視圖控制器的viewDidLoad方法中的()函數,它擁有兩個outlest使用下面的代碼

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

此之後,你不會看到自動填寫附件選項,當你在你的文本框的挖掘。

1

你可以這樣

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

爲UITextContentType添加擴展,你可以用它

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

目標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) 
0

Objective-C的

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

這爲我工作。