當前位置:成語大全網 - 書法字典 - ios如何開發uitextfield來判斷輸入的漢字?

ios如何開發uitextfield來判斷輸入的漢字?

這個要求很奇怪。網上沒有相關信息,可能是因為正常情況下很少需要這樣做。

第壹個是獲取UITextField的內容已經更改的事件(我仍然習慣稱之為事件...),而且蘋果也沒有直接給出ValueChanged這樣的事件。UITextFieldDelegate提供了兩個方法(我再次使用術語方法...嗯,這是目標-c信息):

-(void)textField didbeginediting:(UITextField *)textField

-(void)textField didendediting:(UITextField *)textField

看名字就知道意思了。壹個是編輯的開始,壹個是編輯的結束。我們需要通過這兩種方法編寫自己的ValueChanged事件。

在編輯開始時,向通知中心發送壹個通知(我不知道標準翻譯是什麽),以便調用我們自己編寫的回調方法。

-(void)textField didbeginediting:(UITextField *)textField

{

【【NSNotificationCenter default center】add observer:self selector:@ selector(textFieldDidChange:)name:UITextFieldTextDidChangeNotification對象:_ active textfield】;

}

解釋【NSNotification Center默認中心】的參數添加觀察者:

觀察者

用於處理消息的對象。

選擇器

選擇器,也就是我們自己方法的名稱,這個方法必須有且只有壹個NSNotification類型的參數。

名字

通知名稱。

目標

發送通知的對象,即我們要處理的UITextField。

下面是我自己寫的方法代碼:

-(void)textfield did change:(ns notification *)註意

{

//可以使用note.object獲取生成消息的UITextField。

if(_ active textfield . text . length & gt;0) {

int utf code = 0;

void * buffer = & amputfCode

ns range range = nsmakerage(_ active textfield . text . length-1,1);

ns string * word =【_ active textfield . text substring with range:range】;

BOOL b =【word getBytes:buffer maxLength:2 used length:NULL編碼:nsutf 16 littleeendianstringcoding選項:nsstringencodinconversionexternalrepresentation range:range remainingRange:NULL】;

如果(b & amp& amp(utfCode & gt= 0x4e00 & amp& amputfCode & lt= 0x9fa5))

NSLog(@“它是中文,%@“,單詞);

}

}

}

在代碼中,檢查當前輸入的字符是否為漢字。

GetBytes是具有以下參數的NSString的實例方法:

緩沖器

獲取字符的字節數據

maxLength

緩沖區的最大長度

使用長度

實際寫入的長度,如果不需要可以傳遞NULL。

編碼

字符編碼常數,不同編碼方式轉換後的字節長度不同。在這裏,我使用UTF16 Little-Endian,maxLength為2字節。如果使用Unicode,則需要4個字節。

選擇

編碼轉換選項有兩個值,即NSStringEncoding Conversion low lossy和NSStringEncoding Conversion外部表示。

範圍

獲取字符串中的字符範圍,其中我設置了字符串的最後壹個字符。

剩余農莊

建議獲取範圍,可以傳遞NULL。

返回值

是則返回成功,否則返回否。

Unicode中文編碼範圍為0x4e00~0x9fa5。請註意,如果編碼參數不同,則獲得的字節數據也不同。詳情請參考unicode編碼知識。

最後,在編輯後刪除郵件中的通知。

-(void)textField didendediting:(UITextField *)textField

{

【【NSNotificationCenter default center】remove observer:self name:UITextFieldTextDidChangeNotification對象:_ active textfield】;

}

參考:/blog/static/31804522013211105050136/