TextField输入限制的正确方式

首先添加一个文本改变的触发事件
[textField addTarget:self action:@selector(textFieldDidChange:)
    forControlEvents:UIControlEventEditingChanged];
然后实现该方法,做文本的限制处理
- (void)textFieldDidChange:(UITextField *)textField {
    NSString *toBeString = textField.text;
    // 获取高亮部分
    UITextRange *selectedRange = [textField markedTextRange];
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
    // 没有高亮选择的文本,则对已输入的文本进行字数统计和限制
    if (!position) {
        if (toBeString.length > kMaxLength) {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:kMaxLength];
            if (rangeIndex.length == 1) {
                textField.text = [toBeString substringToIndex:kMaxLength];
            }else {
                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, kMaxLength)];
                textField.text = [toBeString substringWithRange:rangeRange];
            }
        }
    }
}
这样就ok啦
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,404评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,535评论 0 17
  • 《喜剧之王》的朋友,都应该记得这个片段吧。尹天仇对柳飘飘说,我养你啊。这句看似孩子气的承诺,却是他的肺腑之言。如今...
    将军的点歌台阅读 2,231评论 0 0
  • 因为工作的原因,也因为生活水平的原因,我和LEON搬家了。原想搬到一个生活设施方便的地方,却没想到生活在一个闹区。...
    婷下来思考阅读 276评论 0 0