歡迎到個人部落格: 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)
}
uiresponder
的textinputmode
屬性獲取當前鍵盤所使用的輸入模式,例如使用中文輸入法時,在上述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。因為系統的記憶體警告有一定的滯後...