UITextField限制字數(shù)

來自# 小熊翻譯 # App的解讀:

背景: UITextField在中文九宮格鍵盤下會出現(xiàn)輸入空格,具體代碼如下


swift 4.2版本

    textField.addTarget(self, action: #selector(AddTagAlertView.textFieldChanged(textField:)), for: .editingChanged);

    @objc func textFieldChanged(textField:UITextField){
        let kMaxCount: Int = 8
        guard let text = textField.text else {
            return
        }
        // 高亮狀態(tài)不計算長度
        if let selectedRange = textField.markedTextRange, let _: UITextPosition = textField.position(from: selectedRange.start, offset: 0) {
            return
        }
        else {
            if (text.count > kMaxCount) {
                textField.text = String(text.prefix(kMaxCount))
                MBProgressHUD.toast("最多輸入8個字符", false)
            }
        }
    }

OC版本:

[_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

- (void)textFieldDidChange:(UITextField *)textField {
   CGFloat kMaxCount = 8;
    UITextRange *selectedRange = textField.markedTextRange;
    UITextPosition *textPosition = [textField positionFromPosition:selectedRange.start offset:0];
    if (selectedRange && textPosition) {
        return;
    }
    else {
        if (textField.text.length > kMaxCount) {
            textField.text = [textField.text substringToIndex: kMaxCount-1];
            [MBProgressHUD toast:[NSString stringWithFormat:@"最多輸入%d個字符", kMaxCount] :NO];
        }
    }
}


分析原因:
我們可以轉(zhuǎn)換成utf8分析原因: 中文九宮格高亮狀態(tài)會產(chǎn)生空格
textLength就是我們實際需要的字符串長度,但是九宮格狀態(tài)輸入時會出現(xiàn)空格,utf8是 -30,-128,-122,我們把這些過濾之后就得到了實際長度,但是實際限制長度的時候還是按照上面的方法進行

// 下面這段代碼僅用于問題分析

        var textLength = text_result.count
        let str = textField.text?.cString(using: .utf8)
        print("str === \(String(describing: str)), \(String(describing: str?.count))")
        var list = [CChar]()
        if let charList = str {
            for char in charList {
                print("char == \(char)")
                // 中文狀態(tài)下輸入空格會出現(xiàn) -30,-128,-122,要排除utf8為 -30,-128,-122 的影響,再計算長度
                if char != -30 && char != -128 && char != -122 {
                    list.append(char)
                }
            }
            textLength = list.count
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末着憨,一起剝皮案震驚了整個濱河市案铺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闸迷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泉懦,死亡現(xiàn)場離奇詭異稿黍,居然都是意外死亡,警方通過查閱死者的電腦和手機崩哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門巡球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人邓嘹,你說我怎么就攤上這事酣栈。” “怎么了汹押?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵矿筝,是天一觀的道長。 經(jīng)常有香客問我棚贾,道長窖维,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任妙痹,我火速辦了婚禮铸史,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怯伊。我一直安慰自己琳轿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布耿芹。 她就那樣靜靜地躺著崭篡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吧秕。 梳的紋絲不亂的頭發(fā)上琉闪,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天躁愿,我揣著相機與錄音枫甲,去河邊找鬼增显。 笑死易稠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吟秩。 我是一名探鬼主播咱扣,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涵防!你這毒婦竟也來了闹伪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤壮池,失蹤者是張志新(化名)和其女友劉穎偏瓤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椰憋,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡厅克,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了橙依。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片证舟。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窗骑,靈堂內(nèi)的尸體忽然破棺而出女责,到底是詐尸還是另有隱情,我是刑警寧澤创译,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布抵知,位于F島的核電站,受9級特大地震影響软族,放射性物質(zhì)發(fā)生泄漏刷喜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一立砸、第九天 我趴在偏房一處隱蔽的房頂上張望掖疮。 院中可真熱鬧,春花似錦仰禽、人聲如沸氮墨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桥氏,卻和暖如春温峭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背字支。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工凤藏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奸忽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓揖庄,卻偏偏與公主長得像栗菜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蹄梢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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