UITextField UITextView对内容字数的限制

很多时候我们经常会遇到字数的限制。

大部分会选择使用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];
        }
        
        
    }];
  
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值