UITextField详解
2016-01-25 16:48
579 查看
#import "ViewController.h" @interface ViewController () <UITextFieldDelegate> @property (nonatomic, strong) UITextField *textField; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSDictionary *attributeDict = @{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[UIColor redColor]}; NSAttributedString *attributeString = [[NSAttributedString alloc] initWithString:@"默认富文本文字" attributes:attributeDict]; // 初始化文本框 并 设置位置及大小 _textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 200, 40)]; // 添加文本框 [self.view addSubview:_textField]; // 设置代理 _textField.delegate = self; // 设置默认文字 _textField.text = @"默认文字"; // 设置文字字体和大小 _textField.font = [UIFont fontWithName:@"Arial" size:18]; // 设置文字颜色 _textField.textColor = [UIColor blackColor]; // 设置水印提示文字 (当输入框没有内容时显示的灰色文字) _textField.placeholder = @"请输入内容"; // 设置默认富文本文字 和 水印提示富文本文字 会覆盖以前字体大小及颜色 //_textField.attributedText = attributeString; //_textField.attributedPlaceholder = attributeString; // 设置文本框中文字属性 //_textField.defaultTextAttributes = attributeDict; // 设置内容对齐方式 _textField.textAlignment = NSTextAlignmentLeft; /* NSTextAlignmentLeft 左对齐 (默认) NSTextAlignmentCenter 居中对齐 NSTextAlignmentRight 右对齐 NSTextAlignmentJustified Fully-justified. The last line in a paragraph is natural-aligned. NSTextAlignmentNatural Indicates the default alignment for script */ // 设置文本框再次编辑就清空内容 (默认NO) _textField.clearsOnBeginEditing = YES; // 设置密文输入 每输入一个字符就变成点 (默认NO) //_textField.secureTextEntry = YES; // 设置输入内容超出输入框时 字体自动缩小以适应文本窗口大小 (默认NO 字体保持原来大小 文本滚动) _textField.adjustsFontSizeToFitWidth = YES; // 设置文本框可以显示的最小字体 (最小是14) _textField.minimumFontSize = 14; // 设置键盘右下角的返回按钮是disabled(灰色不可点击) 当文本框中没有输入任何字符时 (默认NO) _textField.enablesReturnKeyAutomatically = YES; // 首字母是否大写 _textField.autocapitalizationType = UITextAutocapitalizationTypeNone; /* UITextAutocapitalizationTypeNone 不自动大写 (默认) UITextAutocapitalizationTypeWords 单词首字母大写 UITextAutocapitalizationTypeSentences 句子的首字母大写 UITextAutocapitalizationTypeAllCharacters 所有字母都大写 */ // 设置清除按钮出现方式 文本框右边的小X _textField.clearButtonMode = UITextFieldViewModeWhileEditing; // 设置文本框左侧视图及出现方式 _textField.leftView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"left.png"]]; _textField.leftViewMode = UITextFieldViewModeAlways; // 设置文本框右侧视图及出现方式 与清除按钮冲突 需设置不同出现模式 _textField.rightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]]; _textField.rightViewMode = UITextFieldViewModeUnlessEditing; /* UITextFieldViewModeNever 从不出现 (默认) UITextFieldViewModeWhileEditing 编辑时出现 UITextFieldViewModeUnlessEditing 除了编辑外都出现 UITextFieldViewModeAlways 总是可见 */ // 设置边框样式,只有设置了才会显示边框样式 _textField.borderStyle = UITextBorderStyleNone; /* UITextBorderStyleNone // 无边框 (默认) UITextBorderStyleLine // 黑色直角边框 UITextBorderStyleBezel // 灰色直角边框 (带阴影) UITextBorderStyleRoundedRect // 浅灰色圆角边框 */ // 设置输入框背景颜色 _textField.backgroundColor = [UIColor brownColor]; // 设置自定义背景图片 (图片被拉伸) (当UITextField的样式为UITextBorderStyleNone的时 才能修改此属性) 设置后边框会被忽略掉 颜色无效 _textField.background = [UIImage imageNamed:@"background2.png"]; // 设置当enable为no时 文本框背景图片 //_textField.enabled = NO; //_textField.disabledBackground = [UIImage imageNamed:@"background1.png"]; // 设置是否自动纠错 _textField.autocorrectionType = UITextAutocorrectionTypeDefault; /* UITextAutocorrectionTypeDefault 自动纠错 默认 UITextAutocorrectionTypeNo 不自动纠错 UITextAutocorrectionTypeYes 自动纠错 */ // 设置弹出键盘样式 _textField.keyboardType = UIKeyboardTypeDefault; /* UIKeyboardTypeDefault 支持所有字符 (默认键盘) UIKeyboardTypeASCIICapable 支持ASCII的默 4000 认键盘 UIKeyboardTypeNumbersAndPunctuation 标准电话键盘,支持+*#字符 UIKeyboardTypeURL URL键盘,支持.com按钮 只支持URL字符 UIKeyboardTypeNumberPad 数字键盘 UIKeyboardTypePhonePad 电话键盘 UIKeyboardTypeNamePhonePad 电话键盘,也支持输入人名 UIKeyboardTypeEmailAddress 用于输入电子 邮件地址的键盘 UIKeyboardTypeDecimalPad 数字键盘 有数字和小数点 UIKeyboardTypeTwitter 优化的键盘,方便输入@、#字符 */ // 设置键盘return键样式 _textField.returnKeyType = UIReturnKeySend; /* UIReturnKeyDefault 标有Return的灰色按钮 (默认) UIReturnKeyGo 标有Go的蓝色按钮 UIReturnKeyGoogle 标有Google的蓝色按钮,用语搜索 UIReturnKeyJoin 标有Join的蓝色按钮 UIReturnKeyNext 标有Next的蓝色按钮 UIReturnKeyRoute 标有Route的蓝色按钮 UIReturnKeySearch 标有Search的蓝色按钮 UIReturnKeySend 标有Send的蓝色按钮 UIReturnKeyYahoo 标有Yahoo的蓝色按钮 UIReturnKeyYahoo 标有Yahoo的蓝色按钮 UIReturnKeyEmergencyCall 紧急呼叫按钮 */ // 设置键盘外观 _textField.keyboardAppearance = UIKeyboardAppearanceDefault; /* UIKeyboardAppearanceDefault 浅灰色 (默认) UIKeyboardAppearanceAlert 深灰 石墨色 */ // 设置输入框成为第一响应时弹出的视图和辅助视图 (自定义键盘) //_textField.inputView = [UIView new]; //_textField.inputAccessoryView = [UIView new]; // 文本框是否正在编辑 readonly BOOL isEditing = _textField.isEditing; // 是否允许更改文本属性字典 默认NO _textField.allowsEditingTextAttributes = YES; // 当选择改变时自动重置文本属性 _textField.typingAttributes = attributeDict; // 设置内容垂直、水平对齐方式 UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment _textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; _textField.contentHorizontalAlignment = UIControlContentVerticalAlignmentCenter; // 设置再次编辑时 原内容不消失 输入内容替代原内容 再次点击文本框可再原内容后接着输入 与clearsOnBeginEditing设置消失 此属性默认NO _textField.clearsOnInsertion = YES; // 结束编辑 //[_textField endEditing:YES]; // 注销第一响应 (收起键盘) [_textField resignFirstResponder]; // 成为第一响应 [_textField becomeFirstResponder]; } #pragma mark - UITextFieldDelegate // 设置是否可以进入编辑状态 设NO将无法修改 不出现键盘 YES可以修改 默认值 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { return YES; } // 当文本框成为 FirstResponder 时执行 - (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"BeginEditing"); } // 设置是否可以结束编辑状态 设YES文本框将失去FirstResponder - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { // 要想在用户结束编辑时阻止文本字段消失,可以返回NO 这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息 return YES; } // 当文本框失去 FirstResponder 时执行 - (void)textFieldDidEndEditing:(UITextField *)textField { NSLog(@"EndEditing"); } // 文本框内容是否能被修改 每改变一次就会执行 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSLog(@"ChangeCharacters"); // 可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。 // NSRange 被改变文字的位置 return YES; } // 设置是否允许 根据用户请求清除内容 - (BOOL)textFieldShouldClear:(UITextField *)textField { NSLog(@"Clear"); // 可以设置在特定条件下才允许清除内容 return YES; } // 当点击键盘的返回键(右下角)时执行 - (BOOL)textFieldShouldReturn:(UITextField *)textField { NSLog(@"Return"); // 如果允许要调用resignFirstResponder方法 这会导致结束编辑 如果textFieldShouldEndEditing返回NO 键盘不能收起 if (_textField == textField) { [_textField resignFirstResponder]; } return YES; } #pragma mark - 通知 // UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件 /* UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification 当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。 因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知 UIKeyboardWillShowNotification // 键盘显示之前发送 UIKeyboardDidShowNotification // 键盘显示之后发送 UIKeyboardWillHideNotification // 键盘隐藏之前发送 UIKeyboardDidHideNotification // 键盘隐藏之后发送 */ #pragma mark - 重写绘制 // 除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。 /* - (CGRect)borderRectForBounds:(CGRect)bounds; // 重写来重置边缘区域 - (CGRect)textRectForBounds:(CGRect)bounds; // 重写来重置文字区域 - (CGRect)placeholderRectForBounds:(CGRect)bounds; // 重写来重置占位符区域 - (CGRect)editingRectForBounds:(CGRect)bounds; // 重写来重置编辑区域 - (CGRect)clearButtonRectForBounds:(CGRect)bounds; // 重写来重置clearButton位置,改变size可能导致button的图片失真 - (CGRect)leftViewRectForBounds:(CGRect)bounds; // 重写来重置leftView位置 - (CGRect)rightViewRectForBounds:(CGRect)bounds; // 重写来重置rightView位置 - (void)drawTextInRect:(CGRect)rect; // 改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了. - (void)drawPlaceholderInRect:(CGRect)rect; // 重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了. */ @end
相关文章推荐
- Swift社交应用文本输入优化汇总
- UITextField常用delegate
- UITextField
- iOS开发1:UITextField控件属性
- [Swift]UIKit学习之UITextField的用法
- IOS开发Swift语言UITextField设置靠左的间距
- IOS开发Swift语言键盘遮挡输入框(UITextField)
- iOS UITextField相关
- cocos2d-x 一些有用的函数
- UITextField的使用
- UITextView光标位置的设置
- UISearchbar设置placeholder字体颜色大小
- 第一个IOS程序(代码版)
- iOS UI三大控件和应用程序启动流程
- iOS-TextField知多少 (1)
- iOS-TextField知多少 (2)
- 微信聊天
- IOS Label 同步 UITextfield 显示输入内容(删除)
- iOS中UITextField 使用全面解析
- UITextField的文本特征属性