UITextField基本概念&&限制字符的输入长度(包括中文字符)
来源:互联网 发布:淘宝怎么设置千人千面 编辑:程序博客网 时间:2024/05/15 08:21
- (void)viewDidLoad{ [super viewDidLoad]; //文本输入框 UITextField UITextField *textField = [[UITextField alloc] init]; //设置 textField.frame = CGRectMake(50, 50, 200, 200); //设置输入框中的文本 默认为空 textField.text = nil; //设置输入框中的属性字符串,默认为空 如果不理解属性字符串,可以跳过 textField.attributedText = nil; //设置默认的属性字符串 textField.defaultTextAttributes = nil; //设置默认显示的属性字符串 textField.attributedPlaceholder = nil; //设置输入框的文本颜色,默认为空,可不设置,因为系统设置为黑色 textField.textColor = [UIColor blackColor]; //设置背景颜色 textField.backgroundColor = [UIColor greenColor]; //设置输入框的字体,默认为空,可不设置,系统默认设置12pt textField.font = [UIFont systemFontOfSize:18.0]; //设置背景图片 只有当设置外框类型为UITextBorderStyleNone时才有效 //textField.background = [UIImage imageNamed:@"1.png"]; //textField.disabledBackground = [UIImage imageNamed:@"2.png"]; //设置输入框变为密码框 每输入一个字符就变成点 textField.secureTextEntry = NO; /* typedef NS_ENUM(NSInteger, NSTextAlignment) { NSTextAlignmentLeft = 0, // 左对齐 #if iphone NSTextAlignmentCenter = 1, // 居中 NSTextAlignmentRight = 2, // 右对齐 #else ipad NSTextAlignmentRight = 1, // Visually right aligned NSTextAlignmentCenter = 2, // Visually centered #endif 其他 NSTextAlignmentJustified = 3, // 和段落对齐 NSTextAlignmentNatural = 4, // 默认状态 正常情况下 } NS_ENUM_AVAILABLE_IOS(6_0); */ //设置输入框的文字显示模式 textField.textAlignment = NSTextAlignmentNatural; //设置默认显示的文字 70%透明度 textField.placeholder = @"请输入文字"; /* typedef NS_ENUM(NSInteger, UITextBorderStyle) { UITextBorderStyleNone, //无边框 UITextBorderStyleLine, //方角矩形 实线 UITextBorderStyleBezel, //方角矩形 实线 UITextBorderStyleRoundedRect //圆角矩形 带有透明度的线条 };*/ //设置外框类型 textField.borderStyle = UITextBorderStyleNone; //设置输入框字体最小值 textField.minimumFontSize = 18.0; //设置为YES时文本会自动缩小以适应文本窗口大小,默认是保持原来大小,而让长文本滚动 textField.adjustsFontSizeToFitWidth = NO; /* ypedef NS_ENUM(NSInteger, UIKeyboardType) { UIKeyboardTypeDefault, // 默认状态,支持所有字符 UIKeyboardTypeASCIICapable, // 可以输入ASCII码 UIKeyboardTypeNumbersAndPunctuation, // 数字和标点符号 UIKeyboardTypeURL, // 字母和url(com) UIKeyboardTypeNumberPad, // 数字键盘 UIKeyboardTypePhonePad, // 数字带+*# 电话键盘 UIKeyboardTypeNamePhonePad, // 电话键盘支持输入人名 UIKeyboardTypeEmailAddress, // 字母带@. 输入电子邮件 UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // 数字键盘带. UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // 字母带@# UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // 字母带 前往 按钮 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // 可以输入ASCII码 首字母大写 }; */ //设置键盘的样式 textField.keyboardType = UIKeyboardTypeURL; //当再次编辑输入框时 输入框的内容就会被清空 textField.clearsOnBeginEditing = NO; //首字母是否大写 /* typedef NS_ENUM(NSInteger, UITextAutocapitalizationType) { UITextAutocapitalizationTypeNone, //全部小写 UITextAutocapitalizationTypeWords, //每个单词(中间有空格)的首字母大写 UITextAutocapitalizationTypeSentences, //第一个单词的首字母大写 UITextAutocapitalizationTypeAllCharacters, //全部大写 }; */ textField.autocapitalizationType = UITextAutocapitalizationTypeNone; /* 输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内 typedef NS_ENUM(NSInteger, UITextFieldViewMode) { UITextFieldViewModeNever, //默认显示没有 UITextFieldViewModeWhileEditing, //输入时显示有叉号 UITextFieldViewModeUnlessEditing, //不输入时显示有叉号 UITextFieldViewModeAlways //一直显示有叉号, }; */ textField.clearButtonMode = UITextFieldViewModeWhileEditing ; /* typedef enum { UITextAutocorrectionTypeDefault, 默认 UITextAutocorrectionTypeNo, 不自动纠错 UITextAutocorrectionTypeYes, 自动纠错 } UITextAutocorrectionType; */ //是否纠错 textField.autocorrectionType = UITextAutocorrectionTypeNo; /* typedef NS_ENUM(NSInteger, UIReturnKeyType) { UIReturnKeyDefault, //return键显示默认状态 return UIReturnKeyGo, //return键显示Go UIReturnKeyGoogle, //return键显示Search UIReturnKeyJoin, //return键显示Join 加入 UIReturnKeyNext, //return键显示next 下一个 UIReturnKeyRoute, //return键显示Route UIReturnKeySearch, //return键显示Search 搜索 UIReturnKeySend, //return键显示Send 发送 UIReturnKeyYahoo, //return键显示Search UIReturnKeyDone, //return建显示Done UIReturnKeyEmergencyCall, }; */ //设置return键的类型 textField.returnKeyType = UIReturnKeyDefault; /* typedef NS_ENUM(NSInteger, UIKeyboardAppearance) { UIKeyboardAppearanceDefault, //默认外观 浅灰色 UIKeyboardAppearanceDark //深灰 石墨色 UIKeyboardAppearanceLight //浅灰色 UIKeyboardAppearanceAlert = UIKeyboardAppearanceDark, // 深灰 石墨色 }; */ //设置键盘的外观 textField.keyboardAppearance = UIKeyboardAppearanceDefault; //设置输入文字之间位置的view UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]]; image.bounds = CGRectMake(0, 0, 10, 10); textField.leftView = image; //显示状态和 叉号 显示状态类似 textField.leftViewMode = UITextFieldViewModeAlways; //设置输入框内部右侧位置的view UIImageView *image1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"2"]]; image1.bounds = CGRectMake(0, 0, 10, 10); textField.rightView = image1; //显示状态和 叉号 显示状态类似 textField.rightViewMode = UITextFieldViewModeAlways; textField.delegate = self; [self.view addSubview:textField];}/*重写绘制的各种方法 //重写来重置边缘区域 - (CGRect)borderRectForBounds:(CGRect)bounds; //重写来重置文字区域 - (CGRect)textRectForBounds:(CGRect)bounds { //return CGRectInset(bounds, 50, 0); CGRect inset = CGRectMake(bounds.origin.x+190, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些 return inset;}; //重写来重置占位符区域 也就是默认显示的区域 - (CGRect)placeholderRectForBounds:(CGRect)bounds { //return CGRectInset(bounds, 20, 0); CGRect inset = CGRectMake(bounds.origin.x+100, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些 return inset;}; //重写来重置编辑区域 - (CGRect)editingRectForBounds:(CGRect)bounds { //return CGRectInset( bounds, 10 , 0 ); CGRect inset = CGRectMake(bounds.origin.x +10, bounds.origin.y, bounds.size.width -10, bounds.size.height); return inset;}; //重写来重置clearButton位置,改变size可能导致button的图片失真 - (CGRect)clearButtonRectForBounds:(CGRect)bounds { return CGRectMake(bounds.origin.x + bounds.size.width - 50, bounds.origin.y + bounds.size.height -20, 16, 16);}; //重写来重置左边view区域 - (CGRect)leftViewRectForBounds:(CGRect)bounds { CGRect inset = CGRectMake(bounds.origin.x +10, bounds.origin.y, bounds.size.width-250, bounds.size.height); return inset; //return CGRectInset(bounds,50,0);}; //重写来重置右边view区域 - (CGRect)rightViewRectForBounds:(CGRect)bounds; //重写绘制改变文字属性,重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super - (void)drawTextInRect:(CGRect)rect; //重写绘制改变占位符属性,重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super - (void)drawPlaceholderInRect:(CGRect)rect { //CGContextRef context = UIGraphicsGetCurrentContext(); //CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor); [[UIColororangeColor] setFill]; [[selfplaceholder] drawInRect:rectwithFont:[UIFontsystemFontOfSize:20]];}; */#pragma mark - UITextFieldDelegate//设置输入框,是否可以被修改// NO将无法修改,不出现键盘// YES可以修改,默认值- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ return YES;}//开始编辑时获得焦点时,执行该方法- (void)textFieldDidBeginEditing:(UITextField *)textField{}/* 返回BOOL值,指定是否允许文本字段接触,当编辑结束,文本字段会让出first responder 要想再用户结束编辑时阻止文本字段消失,可以返回NO 这对一些文本字段必须始终保持活跃状态的程序很有用,比如即使消息 */- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ return NO;}//文本框结束编辑以后会调用- (void)textFieldDidEndEditing:(UITextField *)textField{}/* 当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法 这对于想要加入撤销选项的应用程序特别有用 可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用做审计用途 要防止文字被改变可以返回NO 这个方法的参数中又一个NSRange对象,指明了被改变文字的位置,建议修改的文本也再其中 */- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ return YES;}//返回一个BOOL值指明是否允许根据用户请求清除内容//可以设置在特定条件下才允许清除内容- (BOOL)textFieldShouldClear:(UITextField *)textField{ return YES;}//返回一个BOOL值,指明是否允许在按下回车键时结束编辑//如果允许要调用resignFirstResponder方法,会导致结束编辑,而键盘会被手气- (BOOL)textFieldShouldReturn:(UITextField *)textField{ return YES;}
================== 限制字符输入长度================
当你尝试了各种方法还是不能很好地控制中英文的输入长度时,希望你能看到这里的解决方案
#define CourseNameMaxLength 10//在控件上添加通知事件[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:cell.coursrNameText];//离开视图前别忘了释放-(void)dealloc{ [[NSNotificationCenter defaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:_albumNameTextField]; }
//实现通知方法
-(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 > CourseNameMaxLength) { textField.text = [toBeString substringToIndex:CourseNameMaxLength]; } } // 有高亮选择的字符串,则暂不对文字进行统计和限制 else{ } } // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 else{ if (toBeString.length > CourseNameMaxLength) { textField.text = [toBeString substringToIndex:CourseNameMaxLength]; } } }
0 0
- UITextField基本概念&&限制字符的输入长度(包括中文字符)
- UITextField限制中文输入下的字符长度
- UITextField中文输入法输入时对字符长度的限制
- 限制 UITextField 输入的字符长度
- 限制UITextField和UITextView的中英文输入长度(中文占两个字符)
- 实时监控UITextField的输入长度,包括联想字符
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- UITextField字符长度限制
- UITextField字符输入限制
- UITextField字符输入限制
- UItextField限制字符输入的个数
- iOS限制UITextField的输入字符数
- DOM性能瓶颈与Javascript性能优化
- PHP之Phalcon支持(安装与配置)
- osgearth earth文件规范-符号参考
- Android自定义View——可设置形状(圆形、圆角矩形、椭圆)的ImageView,抗锯齿
- Android中ExpandableListView控件基本使用详情
- UITextField基本概念&&限制字符的输入长度(包括中文字符)
- 图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
- Maven带jetty服务器插件
- Cannot assign value of type 'InterfaceController' to type 'HKWorkoutSessinDelegate'
- 机器学习,数据挖掘,人工智能,统计学的一点随笔
- greenDAO
- 选项卡——点击导航位置,下面部分内容改变
- MYSQL数据库管理之权限管理
- 配置文件Struts.xml <result>中type属性 redirect,redirectAction,chain的区别