ios – 为UITextField实现输入掩码
发布时间:2020-12-14 19:04:16 所属栏目:百科 来源:网络整理
导读:我正在寻找一种方法来实现UITextField的输入掩码,如下所示: 主要特点: 在光标右侧显示一个空字符的占位符 禁止输入当前光标位置的错误字符(例如,第一个字符只能是拉丁字符,第二个字符只能是数字) 禁止选择,剪切和粘贴 禁止设置光标位置(用户只能添加新的字
我正在寻找一种方法来实现UITextField的输入掩码,如下所示:
主要特点: >在光标右侧显示一个空字符的占位符 解决方法
我能够使用UITextField子类获得所有这些功能.您可能希望将这些委托方法移动到ViewController中并在那里设置自定义TextField委托.为了这个例子,更容易向你展示一个类中的所有内容.显然,您将不得不调整那些允许满足您需求的字符集.
#import "TextField.h" @interface TextField()<UITextFieldDelegate> @end @implementation TextField -(instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.delegate = self; } return self; } - (UITextPosition *)closestPositionToPoint:(CGPoint)point{ UITextPosition *beginning = self.beginningOfDocument; UITextPosition *end = [self positionFromPosition:beginning offset:self.text.length]; return end; } - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(paste:) || action == @selector(select:) || action == @selector(selectAll:) || action == @selector(cut:)){ return NO; } return [super canPerformAction:action withSender:sender]; } -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if (range.location == 0 && [string rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]].location == NSNotFound) { return NO; }else if (range.location == 1 && [string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location == NSNotFound){ return NO; } return YES; } @end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |