IOS textField限制位元組長度

2022-09-25 05:09:10 字數 1081 閱讀 7804

oc語言中,nsstring型別的字串,視英文本母和程式設計客棧漢字都為乙個長度(string.length把乙個漢字也當做乙個長度),而實際上,乙個英文本母只占用1個位元組,乙個漢字占用2個位元組。

有時又有需求,需要限定位元組數目,而不是內容個數,就需要通過一些方法獲取到字串的位元組數。比如,限定10個位元組,則最多可以輸入10個英文本母,或者5個漢字。

監聽textfield的長度變化,就需要設定textfield的**。

但是有個bug,監聽內容變化的**方法

- (bool)textfield:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string

在點選鍵盤輸入是正常的,但如果不點選鍵盤按鍵,拿漢字輸入舉例,輸入乙個字後,鍵盤上面會出現與該字可能是詞語的字,點上面出現的字來輸入,就不會觸發上面的**方法。

所以這個**方法不能用,我們需要通過註冊textfield的通知來監聽。

//註冊通知,textfield內容改變呼叫

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(textfielddidchange:) name:uitextfieldtextdidchangenotification object:self.testtextfield];

實現通知方法

- (void)textfielddidchange:(nsnotification *)note

else

}程式設計客棧//得到位元組數函式

- (int)stringconverttoint:(nsstring*)strtemp

else

}return (strlength+1)/2;

}如果textfield一開始就有內容,就要獲取到,用**方法

- (bool)textfieldshouldbeginediting:(uitextfield *)textfield

本文標題: ios textfield限制位元組長度

本文位址:

iOS textfield 限制只能輸入中文

網上搜到的大都是同一種方法,但是這種方法在全鍵的情況下可以,在九鍵的情況下是存在問題的,弄得頭疼,後來才發現,九鍵輸入的字元是需要特殊處理的 而且光處理九鍵還是會有問題,乾脆自己寫吧 件 import inte ce chinesenotificationhelp nsobject instance...

Swift UITextView 限制輸入字元數

我們經常遇到統計字元數的問題呢,限制使用者輸入,但是聯想詞很難處理,這裡就提供一種方法處理聯想詞,讓字元的統計和輸入很完美實現。初始化uitextview self textview uitextview alloc initwithframe cgrectmake 15 uirate,5 uira...

UITextView實現限制100字

placehoderlable uilabel alloc initwithframe cgrectmake 3,3,devicewidth 6,40 根據情況調節位置 placehoderlable.enabled no placehoderlable.text 請在這裡輸入您要的內容,您的預言需...