博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义UItextFiled,限制TextFiled 的输入长度
阅读量:6173 次
发布时间:2019-06-21

本文共 3218 字,大约阅读时间需要 10 分钟。

1、一般情况下,处理textFiled的字符数都会用到textField的代理方法

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

在方法中对字符数进行控制,但是此方法的有一定的问题。现在推出一种新的自定义的机制,自定义textField控件,为其增加一个控制输入长度的属性,如下

.h文件

#import 
@interface PKTextField : UITextField@property (nonatomic,assign)NSInteger allowInputLength;@end

.m 文件

#import "PKTextField.h"@implementation PKTextField- (instancetype)init{    self = [super init];    if (self) {        self.allowInputLength = CGFLOAT_MAX;        [self addTarget:self action:@selector(textFieldEditChanged) forControlEvents:UIControlEventEditingChanged];    }    return self;}- (instancetype)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    self.allowInputLength = CGFLOAT_MAX;    [self addTarget:self action:@selector(textFieldEditChanged) forControlEvents:UIControlEventEditingChanged];    return self;}-(void)layoutSubviews{    [super layoutSubviews];    self.clipsToBounds = YES;    self.backgroundColor = [UIColor whiteColor];    self.layer.cornerRadius = 2.5;    self.layer.borderWidth = 0.5;    self.borderStyle = UITextBorderStyleNone;}-(void)setEnabled:(BOOL)enabled{    [super setEnabled:enabled];        if (enabled == YES) {        self.layer.borderColor = [UIColor colorFromHexRGB:@"999999" alpha:1.0].CGColor;                CGRect frame = self.frame;        frame.size.width = 5.0;        UIView *leftview = [[UIView alloc] initWithFrame:frame];        self.leftViewMode = UITextFieldViewModeAlways;        self.leftView = leftview;        CGRect rightFrame = CGRectMake(0,0,5, self.bounds.size.height);        UIView * rightView = [[UIView alloc] initWithFrame:rightFrame];        self.rightViewMode = UITextFieldViewModeAlways;        self.rightView = rightView;                   }else{        self.layer.borderColor = [UIColor clearColor].CGColor;        self.leftView = nil;        self.rightView = nil;    }}-(void)textFieldEditChanged{    UITextField *textField = self;    NSString *toBeString = textField.text;        //获取高亮部分    UITextRange *selectedRange = [textField markedTextRange];    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];        // 没有高亮选择的字,则对已输入的文字进行字数统计和限制    if (!position)    {        if (toBeString.length > self.allowInputLength)        {            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:self.allowInputLength];            if (rangeIndex.length == 1)            {                textField.text = [toBeString substringToIndex:self.allowInputLength];            }            else            {                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, self.allowInputLength)];                textField.text = [toBeString substringWithRange:rangeRange];            }        }    }}@end

使用示例:

PKTextField * titleTF = [[PKTextField alloc] initWithFrame:CGRectMake(leftPadding, 17, ScreenWidth - leftPadding - BtnHotWidth, 30)]; titleTF.textColor = [UIColor blackColor]; titleTF.enabled = NO; titleTF.text = @""; titleTF.font = [UIFont systemFontOfSize:23.0]; titleTF.allowInputLength = 10;

 

转载于:https://www.cnblogs.com/tianlin106/p/6441044.html

你可能感兴趣的文章
iOS:VFL语言
查看>>
让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
查看>>
用scikit-learn学习DBSCAN聚类
查看>>
Linux设备模型(热插拔、mdev 与 firmware)【转】
查看>>
Android开发笔记第二篇(Android 手机概念)
查看>>
js隐藏与显示回到顶部按钮
查看>>
hdu4496 D-City(扭转和支票托收啊 )
查看>>
数据挖掘 | 数据理解和预处理
查看>>
关于大数据你必须了解的几个关键词!
查看>>
在Kali Linux中更改GRUB2背景的5种方式
查看>>
如何把Windows 10的“便笺”按钮从操作中心挪到开始菜单和桌面
查看>>
19 个必须知道的 Visual Studio 快捷键
查看>>
如何在Ubuntu命令行下管理浏览器书签
查看>>
《大数据分析原理与实践》一一2.1 大数据分析模型建立方法
查看>>
《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.7 测试套件和类型...
查看>>
8月18日云栖精选夜读:阿里视频云最强转码技术揭秘:窄带高清原理解析+用户接入指南...
查看>>
涨姿势:工业物联网与大数据融合的四个重点
查看>>
社会学视角下的大数据方法论及其困境
查看>>
《云计算:原理与范式》一1.7 平台即服务供应商
查看>>
百度成立“百度搜索公司”:固本拓新驱动生态裂变
查看>>