iOS限制UITextField的輸入字元數

2021-07-06 01:13:13 字數 1255 閱讀 8351

歡迎到個人部落格: liumh.com檢視本文。

專案中經常會遇到限制uitextfield中輸入字元數的需求,並且會根據輸入的英文還是中文給出不同的限定數,本文記錄其解決方案。

對於全英文的輸入限定很簡單,但是輸入中文時,當輸入拼音但未選擇中文時,此時輸入文字框的文字會包括輸入的拼音,是選中的狀態,比如這樣:

上面的情況如果列印uitextfield的text屬性會輸出:中國di zhi。由於拼音是選中狀態的,那麼可以根據 uitextinput 協議判斷uitextfield中是否有選中狀態的字元,從而決定是否對輸入字元進行截斷處理。

當uitextfield中輸入文字發生變化時,會傳送uitextfieldtextdidchangenotification,先監聽此訊息通知:

- (void)viewdidload 

- (void)dealloc

然後在checktextfieldtextlength:訊息中處理輸入限定:

- (void)checktextfieldtextlength:(nsnotification *)noti

//獲取文字的位元組長度

nsuinteger lenofbytes = [text lengthofbytesusingencoding:nsutf8stringencoding];

if (text.length == lenofbytes && text.length > kmaxenglishlen) else

if (text.length != lenofbytes && text.length > kmaxchineselen)

}

另外,可利用uirespondertextinputmode屬性獲取當前鍵盤所使用的輸入模式,例如使用中文輸入法時,在上述checktextfieldtextlength:訊息中插入:

nslog(@"textfield.textinputmode: %@", [textfield.textinputmode primarylanguage]);

會列印出:

textfield.textinputmode: zh-hans

意味著此時使用者正使用中文輸入法.

參考:ios:uitextfield中文輸入法輸入時對字元長度的限制

IOS鍵盤的相關設定 UITextfield

一 鍵盤風格 uikit框架支援8種風格鍵盤。typedefenumuikeyboardtype 用法用例 textview.keyboardtype uikeyboardtypenumberpad 二 鍵盤外觀 typedefenumuireturnkeytype 用法用例 textview.re...

IOS鍵盤的相關設定 UITextfield

一 鍵盤風格 uikit框架支援8種風格鍵盤。typedefenumuikeyboardtype 用法用例 textview.keyboardtype uikeyboardtypenumberpad 二 鍵盤外觀 typedefenumuireturnkeytype 用法用例 textview.re...

iOS可用記憶體限制

ipad2可以占用到300m以上,這個不太穩定,可能衝到350就被殺掉了。可以在收到記憶體警告的時候自己的程式內部做些記憶體釋放處理。另外可能在記憶體緊張時裝置的cpu也非常緊張或正在超頻,那你即使在程式中對系統記憶體警告進行了處理,基本上也於事無補了,會crash。因為系統的記憶體警告有一定的滯後...