如果你想判断一个字符串包含多少个汉字,或许很容易。你会觉得UITextField的代理方法还是蛮多的。
其中这个代理
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
另外一种解决办法就是利用通知:UITextFieldTextDidChangeNotification
当你的UITextField发生任何变化的时候,都会立即发出通知。
首先,让我们注册一个通知:
//注册通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldDidChange:)name:UITextFieldTextDidChangeNotification object:_myTextField];
其次是实现我们的通知方法:
/*
*通知相应方法
*/
- (void)textFieldDidChange:(NSNotification *)note
{
int count = 0;
if (_myTextField.text.length > 0) {
for (int i = 0; i<_myTextField.text.length; i++) {
unichar c = [_myTextField.text characterAtIndex:i];
if (c >=0x4E00 && c <=0x9FA5)
{
count++;
}
}
[_myLabel setText:[NSString stringWithFormat:@"%d",count]];
}
}
当我们不需要的时候,注销该通知:
[[NSNotificationCenter defaultCenter]removeObserver:self name:UITextFieldTextDidChangeNotification object:_myTextField];
奉上源代码,仅供参考。