亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在iOS中使用textField限制字符串長度

發布時間:2021-05-13 17:14:41 來源:億速云 閱讀:201 作者:Leah 欄目:移動開發

本篇文章為大家展示了怎么在iOS中使用textField限制字符串長度,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

方法如下:

1、判斷字符串是否超出長度

[self.txfUsername addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
 - (void)textFieldDidChange:(id)sender
{
 if (self.textField.text.length > MAXLENGTH) // MAXLENGTH為最大字數
 {
 //超出限制字數時所要做的事
 }
}

為什么在這里要自己監聽textField中文字的變化,而不直接使用textField的代理方法-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

因為這個方法在中文書輸入法下,只能輸入一個詞的情況,如果聯想詞是兩個詞,也可以輸入。所以會出現誤差。直接監聽UIControlEventEditingChanged 是最靠譜的。

2、超出長度不可輸入

if (self.textField.text.length > MAXLENGTH) // MAXLENGTH為最大字數
 {
 self.textField.text = [self.txfUsername.text substringToIndex: MAXLENGTH]; // MAXLENGTH為最大字數
 }

如果超出長度,永遠把前MAXLENGTH的子字符串賦給textField的text,即textField永遠只顯示前MAXLENGTH個字,視覺效果就是無法繼續輸入。

3、前面所有用到的MAXLENGTH均為字符串長度,不論數字字母還是漢字,最后要解決的問題就是判斷字符數。

//按照中文兩個字符,英文數字一個字符計算字符數
-(NSUInteger) unicodeLengthOfString: (NSString *) text {
 NSUInteger asciiLength = 0;
 for (NSUInteger i = 0; i < text.length; i++) {
 unichar uc = [text characterAtIndex: i];
 asciiLength += isascii(uc) ? 1 : 2;
 }
 return asciiLength;
}

NSUInteger lenOfBytes = [text lengthOfBytesUsingEncoding:NSUTF8StringEncoding];也試過,lengthOfBytesUsingEncoding就是按照編碼返回字節數,但是NSUTF8StringEncoding是按照英文一個字符,中文三個字符來編碼的,NSUnicodeStringEncoding是按照英文數字漢字都是兩個字符編碼的,目前iOS中的編碼方法都和需求不符,所以需要另外做計算。

上述內容就是怎么在iOS中使用textField限制字符串長度,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖州市| 油尖旺区| 永仁县| 禹城市| 遂溪县| 晋州市| 郯城县| 铁岭市| 金平| 惠水县| 西华县| 济阳县| 乌拉特前旗| 琼结县| 东阳市| 儋州市| 蒲城县| 芜湖县| 江津市| 延长县| 清苑县| 葫芦岛市| 九寨沟县| 宜良县| 金昌市| 内黄县| 冷水江市| 九龙城区| 麟游县| 新竹县| 冕宁县| 马山县| 台前县| 庆元县| 铁力市| 阿巴嘎旗| 阜康市| 西城区| 临沧市| 峡江县| 涞水县|