国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

IOS之textField限制字節(jié)長(zhǎng)度的實(shí)現(xiàn)方法

2020-02-19 15:51:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在項(xiàng)目開(kāi)發(fā)過(guò)程中,將NSString類(lèi)型的字符串視為英文字母和中文字符的一個(gè)長(zhǎng)度,事實(shí)上,一個(gè)英文字母只需要一個(gè)字節(jié),一個(gè)漢字只需要兩個(gè)字節(jié),下文是武林技術(shù)頻道小編為您整理的IOS之textField限制字節(jié)長(zhǎng)度的實(shí)現(xiàn)方法,一起進(jìn)入下文了解一下吧!

有時(shí)又有需求,需要限定字節(jié)數(shù)目,而不是內(nèi)容個(gè)數(shù),就需要通過(guò)一些方法獲取到字符串的字節(jié)數(shù)。比如,限定10個(gè)字節(jié),則最多可以輸入10個(gè)英文字母,或者5個(gè)漢字。

監(jiān)聽(tīng)textField的長(zhǎng)度變化,就需要設(shè)置textField的代理。

但是有個(gè)bug,監(jiān)聽(tīng)內(nèi)容變化的代理方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

在點(diǎn)擊鍵盤(pán)輸入是正常的,但如果不點(diǎn)擊鍵盤(pán)按鍵,拿漢字輸入舉例,輸入一個(gè)字后,鍵盤(pán)上面會(huì)出現(xiàn)與該字可能是詞語(yǔ)的字,點(diǎn)上面出現(xiàn)的字來(lái)輸入,就不會(huì)觸發(fā)上面的代理方法。

所以這個(gè)代理方法不能用,我們需要通過(guò)注冊(cè)textField的通知來(lái)監(jiān)聽(tīng)。

//注冊(cè)通知,textfield內(nèi)容改變調(diào)用[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:self.testTextField];

實(shí)現(xiàn)通知方法

- (void)textFieldDidChange:(NSNotification *)note{UITextField *textField = note.object;//獲取文本框內(nèi)容的字節(jié)數(shù)int bytes = [self stringConvertToInt:self.testTextField.text];//設(shè)置不能超過(guò)32個(gè)字節(jié),因?yàn)椴荒苡邪雮€(gè)漢字,所以以字符串長(zhǎng)度為單位。if (bytes > 16){//超出字節(jié)數(shù),還是原來(lái)的內(nèi)容self.testTextField.text = self.lastTextContent;}else{self.lastTextContent = self.testTextField.text;}}//得到字節(jié)數(shù)函數(shù)- (int)stringConvertToInt:(NSString*)strtemp{ int strlength = 0; char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++){ if (*p) { p++; strlength++; } else { p++; }}return (strlength+1)/2;}

如果textField一開(kāi)始就有內(nèi)容,就要獲取到,用代理方法

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{self.lastTextContent = textField.text;return YES;}

以上是IOS之textField限制字節(jié)長(zhǎng)度的實(shí)現(xiàn)方法,希望能對(duì)您有所幫助,也希望大家繼續(xù)支持武林技術(shù)頻道!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 疏附县| 毕节市| 嘉定区| 抚州市| 开封县| 汉寿县| 金寨县| 吉林市| 云霄县| 蕉岭县| 湄潭县| 屯门区| 潮安县| 孟津县| 中卫市| 张掖市| 吐鲁番市| 闸北区| 滕州市| 长武县| 黔南| 绥阳县| 高台县| 彭阳县| 灌云县| 海兴县| 长阳| 巴楚县| 石渠县| 哈巴河县| 历史| 平武县| 隆安县| 阳原县| 青海省| 昭觉县| 康定县| 错那县| 凯里市| 若尔盖县| 凯里市|