UITextField如何限制限制文本輸入長度?

UITextField如何限制限制文本輸入長度

  • 原理和UITextView限制文本輸入長度原理一樣,不同的是UITextField可以監(jiān)聽UIControlEventEditingChanged事件獲取到UITextField文本輸入改變;UITextView需要監(jiān)聽UITextViewTextDidChangeNotification通知
    [field addTarget:self action:@selector(fieldTextDidChange:) forControlEvents:UIControlEventEditingChanged];

1. 具體實(shí)現(xiàn)代碼


- (void)testTextField

{

    UITextField *field = [[UITextField alloc] init];

    field.frame = CGRectMake(100, 155, 200, 50);

    [self.view addSubview:field];

    field.backgroundColor = [UIColor grayColor];

    [field addTarget:self action:@selector(fieldTextDidChange:) forControlEvents:UIControlEventEditingChanged];

}

- (void)fieldTextDidChange:(UITextField *)textField

{

    /**

     *  最大輸入長度,中英文字符都按一個(gè)字符計(jì)算

     */

    static int kMaxLength = 10;

    

    NSString *toBeString = textField.text;

    // 獲取鍵盤輸入模式

    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage];

    // 中文輸入的時(shí)候,可能有markedText(高亮選擇的文字),需要判斷這種狀態(tài)

    // zh-Hans表示簡體中文輸入, 包括簡體拼音瓦呼,健體五筆,簡體手寫

    if ([lang isEqualToString:@"zh-Hans"]) {

        UITextRange *selectedRange = [textField markedTextRange];

        //獲取高亮選擇部分

        UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];

        // 沒有高亮選擇的字恨豁,表明輸入結(jié)束,則對已輸入的文字進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)和限制

        if (!position) {

            if (toBeString.length > kMaxLength) {

                // 截取子串

                textField.text = [toBeString substringToIndex:kMaxLength];

            }

        } else { // 有高亮選擇的字符串库物,則暫不對文字進(jìn)行統(tǒng)計(jì)和限制

        }

    } else {

        // 中文輸入法以外的直接對其統(tǒng)計(jì)限制即可,不考慮其他語種情況

        if (toBeString.length > kMaxLength) {

            // 截取子串

            textField.text = [toBeString substringToIndex:kMaxLength];

        }

    }

}
  • iOS技術(shù)開發(fā)交流QQ群: 579572313
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末签舞,一起剝皮案震驚了整個(gè)濱河市秕脓,隨后出現(xiàn)的幾起案子柒瓣,更是在濱河造成了極大的恐慌,老刑警劉巖吠架,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芙贫,死亡現(xiàn)場離奇詭異,居然都是意外死亡傍药,警方通過查閱死者的電腦和手機(jī)磺平,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拐辽,“玉大人拣挪,你說我怎么就攤上這事【阒睿” “怎么了菠劝?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長睁搭。 經(jīng)常有香客問我赶诊,道長,這世上最難降的妖魔是什么园骆? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任舔痪,我火速辦了婚禮,結(jié)果婚禮上锌唾,老公的妹妹穿的比我還像新娘锄码。我一直安慰自己,他們只是感情好晌涕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布巍耗。 她就那樣靜靜地躺著,像睡著了一般渐排。 火紅的嫁衣襯著肌膚如雪炬太。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天驯耻,我揣著相機(jī)與錄音亲族,去河邊找鬼。 笑死可缚,一個(gè)胖子當(dāng)著我的面吹牛霎迫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帘靡,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼知给,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涩赢,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤戈次,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后筒扒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怯邪,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年花墩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悬秉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冰蘑,死狀恐怖和泌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祠肥,我是刑警寧澤武氓,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站搪柑,受9級(jí)特大地震影響聋丝,放射性物質(zhì)發(fā)生泄漏索烹。R本人自食惡果不足惜工碾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望百姓。 院中可真熱鬧渊额,春花似錦、人聲如沸垒拢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽求类。三九已至奔垦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尸疆,已是汗流浹背椿猎。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寿弱,地道東北人犯眠。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像症革,于是被迫代替她去往敵國和親筐咧。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容