第壹個是獲取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/