iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別

yang152412發表於2019-02-21

最近使用者反饋了一個 bug,說我們的 app 有 bug,本來是顯示數字鍵盤的,缺顯示了符號,截圖如下:

iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別

可是看過程式碼,對於鍵盤的 type 設定的是 UIKeyboardTypeNumbersAndPunctuation,應該顯示數字和符號的。那這明顯就是 Apple 針對九宮格鍵盤給的預設型別不是想要的。

而全鍵盤的時候,應該是下面這樣的:

iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別

這就很坑了,找了半天也沒找到發現針對九宮格設定預設型別是數字,但是又能切換輸入法的。

最後偶然發現另外一臺手機的九宮格預設是數字:

iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別

仔細查詢原因,發現是因為手機設定裡面把 自動首字母大寫開關是關閉的。知道這個原因就好解決了。直接設定 textfield 的首字母大寫關閉就好了。

_inputField.autocapitalizationType = UITextAutocapitalizationTypeNone;
複製程式碼

另外還發現另外一個方法,textInputContextIdentifier, 可以記錄鍵盤使用型別。但是隻能再 app 執行中間記錄,如果 app 重啟,就失效了。

- (NSString *)textInputContextIdentifier
{
    return @"InputInviteCodeIdentifier";
}

複製程式碼

參考:kemchenj.github.io/2017-08-07/

相關文章