很多时候我们经常会遇到字数的限制。
大部分会选择使用UITextField or UItextView 的didEdit 代理方法来进行操作。
但是这会出现个问题,当我们输入汉字,打拼音的时候,即使我们没有选中汉字,这个代理也会走。
这就导致我们得到的string的内容和当前显示的是有出入的。
下面这个方法,可以在我们有高亮选择的字的时候的判断,但是这个方法不足之处,是emoji表情的处理,不到位。
如果加上emoji表情的处理,会比较麻烦。这里先不描述这个事情了。
[[NSNotificationCenterdefaultCenter]addObserver:self selector:@selector(infoAction)name:UITextFieldTextDidChangeNotification object:nil];
- (void)infoAction{
// NSString *toBeString = [self.nameTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
UITextRange *selectedRange = [self.nameTextField markedTextRange];
UITextPosition *position = [self.nameTextField positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (position)
{
return;
}
self.keyWord = self.nameTextField.text;
__weak typeof(self)WeakSelf = self;
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:self.keyWord forKey:@"name"];
[YiliaoRequest getDoctor:params finished:^(NSDictionary *data) {
YLLog(@"%@",data);
if ([data[@"ret"] intValue] == 200) {
WeakSelf.soureArr = [SelfInformation mj_objectArrayWithKeyValuesArray:data[@"body"]];
[WeakSelf.tbView reloadData];
}else{
WeakSelf.soureArr = nil;
[WeakSelf.tbView reloadData];
}
}];
}