学习iOS界面设计也有段时间了,每次写到一些基础控件(如:UILable 、 UITextField)的时候就深觉应该总结一个函数来实现这些基础控件的属性设置,所以下面就是我对UITextField的学习:
一、定义一个输入控件
// 输入控件 @property (nonatomic,strong) UITextField *textField;
二、在viewDidLoad中实例化
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // 实例化输入框 4 _textField = [[UITextField alloc]initWithFrame:CGRectMake(40, 100, 295, 40)]; 5 // 设置textField的属性 6 [self propertyOfTextField:_textField]; 7 // 添加到父视图 8 [self.view addSubview:_textField]; 9 }
三、UITextField的常用属性设置
1 #pragma mark - UITextField属性设置 2 - (void)propertyOfTextField:(UITextField *)textField { 3 // 设置边框样式 4 textField.borderStyle = UITextBorderStyleRoundedRect; 5 // 设置占位符 6 textField.placeholder = @"占位符"; 7 // 设置光标的颜色 8 textField.tintColor = [UIColor redColor]; 9 // 设置输入框背景颜色 10 textField.backgroundColor = [UIColor lightGrayColor]; 11 // 设置text字体的颜色 12 textField.textColor = [UIColor orangeColor]; 13 // 清除模式 14 textField.clearButtonMode = UITextFieldViewModeWhileEditing; 15 // 是否安全输入 16 textField.secureTextEntry = NO; 17 // 设置字体大小 18 textField.font = [UIFont systemFontOfSize:24]; 19 // 文本对齐方式 20 textField.textAlignment = NSTextAlignmentLeft; 21 // 是否纠错(即:联想) 22 textField.autocorrectionType = UITextAutocorrectionTypeNo; 23 // 首字母是否大写 24 textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 25 // 再次编辑时是够清空 26 textField.clearsOnBeginEditing = YES; 27 // 设置键盘样式 28 textField.keyboardAppearance = UIKeyboardAppearanceDark; 29 // 设置return按钮的样式 30 textField.returnKeyType = UIReturnKeySearch; 31 // 设置代理 32 textField.delegate = self; 33 }
四、UITextFieldDelegate 方法
1 #pragma mark - <UITextFieldDelegate> method 2 // 1. 是否允许开始编辑 3 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 4 return YES; 5 } 6 7 // 2. 已经开始编辑时触发 8 - (void)textFieldDidBeginEditing:(UITextField *)textField { 9 10 } 11 12 // 3. 是否允许结束编辑 13 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { 14 return YES; 15 } 16 17 // 4. 已经结束编辑是触发 18 - (void)textFieldDidEndEditing:(UITextField *)textField { 19 20 } 21 22 // 5. 是否允许改变文本输入框字符的长度 可以得到用户输入的字符 23 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 24 25 // 可在限制用户输入字符的长度以及敏感字符的输入等 26 return YES; 27 } 28 29 // 6. 是否允许清除 30 - (BOOL)textFieldShouldClear:(UITextField *)textField { 31 return YES; 32 } 33 34 // 7. 是否响应return键 35 - (BOOL)textFieldShouldReturn:(UITextField *)textField { 36 37 // 用户点击键盘上的return键会触发该方法,所以可在此处完成点击return的一些操作 38 return YES; 39 }
五、收起键盘的方法:
1 // 收键盘1 -- 文本失去第一响应 2 [textField resignFirstResponder]; 3 // 收键盘2 -- 界面停止编辑 4 [self.view endEditing:YES];
六、拓展:除了上述一些常用的属性外,还有其他属性也需要了解
- minimumFontSize :自动缩小显示的最小字体
- adjustsFontSizeToFitWidth:是否自动调整字体大小
- contentVerticalAlignment:垂直对齐方式
- inputAccessoryView:输入附属视图
- inputView:输入视图(键盘视图)
有些时候要自定义键盘的话,就可以给inputAccessoryView 和inputView两个属性赋值,如果是自定义UITextField,则需要重写这两个属性的getter方法。
以上是我对UITextField的一些总结,如有写得不准确或不完善的地方,还请指正补充,谢谢!!!