textField限制输入长度

本文介绍了一种在iOS应用中限制UITextField输入长度的方法,包括对中文字符的精确计数和限制,并展示了如何通过监听UITextField的文本变化来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对字符串的长度限制,实现如下:

#define kMaxLength 20
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

   NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];

   if (toBeString.length > kMaxLength && range.length!=1){
       textField.text = [toBeString substringToIndex:kMaxLength];
       return NO;

   }
   return YES;
}

对汉字进行限制输入长度
#define kMaxLength 20

<1>在init时候注册notification:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
                                           name:@"UITextFieldTextDidChangeNotification"
                                         object:myTextField];

<2>实现监听方法:
-(void)textFiledEditChanged:(NSNotification *)obj{
   UITextField *textField = (UITextField *)obj.object;
   
   NSString *toBeString = textField.text;
   NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式
   if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写
       UITextRange *selectedRange = [textField markedTextRange];
       //获取高亮部分
       UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
       // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
       if (!position) {
           if (toBeString.length > kMaxLength) {
               textField.text = [toBeString substringToIndex:kMaxLength];
           }
       }
       // 有高亮选择的字符串,则暂不对文字进行统计和限制
       else{
         
       }
   }
   // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
   else{
       if (toBeString.length > kMaxLength) {
           textField.text = [toBeString substringToIndex:kMaxLength];
       }
   }
}

<3>在dealloc里注销掉监听方法,切记!
-(void)dealloc{
   [[NSNotificationCenter defaultCenter]removeObserver:self
                                           name:@"UITextFieldTextDidChangeNotification"
                                         object:_albumNameTextField];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值