iOS UITextField输入限制(中英文混合

本文主要介绍了如何在iOS应用中限制UITextField的输入字数,特别是处理中英文混合的情况。通过讨论`textField:shouldChangeCharactersIn:replacementString:`方法,解释了其在输入和删除时的行为。提出了两种解决方案:一是利用该方法直接限制英文和数字输入;二是结合`UIKeyboardType`枚举和正则表达式监测内容变化,以适应中文输入。文章提供了相应的代码示例,并建议在不同场景下选择合适的解决方案。
摘要由CSDN通过智能技术生成

先说说记录这个的原因吧,关于限制UITextField的输入字数的各种需求,已经疲软了,工作几年中用的还真不少,有只要字数长度的,也有字符长度的,当然这个就包括中文和英文,还有.....标点符号也分中文和英文的,每次都多不情愿的写这个地方,闲来无事,就来记录一下,方便大家,若有不对的地方,多多指教哈。

关于UITextField

大家肯定对下面这个方法非常熟悉

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

那么这个函数的大概意思是什么呢?我是这么理解的(个人认为)
由于返回的是个 BOOL 所以我猜想大概就是我们在输入的时候,是否对UITextField 的内容进行修改
下面来简单分析下参数
textField 这个参数大家都懂,就是响应该协议的UITextField对象
range在这个函数中,添加了打印信息,测试了下

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
        NSLog(@" 打印信息:%lu  -----%lu ",(unsigned long)range.location,(unsigned long)range.length);
}

//打印log
2017-01-25 17:48:49.826 TestObject[5502:683375]  打印信息toBeString:Zxtgfd
2017-01-25 17:48:50.506 TestObject[5502:683375]  打印信息:6  -----0 
2017-01-25 17:48:50.508 TestObject[5502:683375]  打印信息toBeString:Zxtgfda
2017-01-25 17:48:51.894 TestObject[5502:683375]  打印信息:6  -----1

由此可以看到,在输入的时候,range.length为0,range.location为插入时的位置 ,range.length为1时,是我在点击删除的时候打印的,应该可以表示删除(不确定)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值