IOS控件布局之UITextField使用
前言:
在iOS中使用UITextField用于外部数据的输入,其功能相当于Android中的EditText,这几天发现一个特别现象,iOS控件的命名特别类似Java swing或者awt这种的命名,比如UITextField 在Java中的命名为JTextField,然而Android的控件命名居然没有参考本身使用的开发语言Java来进行参考,比如可以命名为ATextField,哈哈,这点看着还蛮有意思的。
UITextField使用
1.)初始化
//第一种 UITextField *mTextField=[[UITextField alloc]init]; //第二种 UITextField *mTextField =[[UITextField alloc]initWithFrame:CGRectMake(0, 50, SCREEN_WIDTH, 50)];
2.)边框样式设置
//设置输入框边框样式 mTextField.borderStyle=UITextBorderStyleRoundedRect;
UITextBorderStyle枚举
- UITextBorderStyleNone,//无框
- UITextBorderStyleLine,//线框
- UITextBorderStyleBezel,//bezel风格线框
- UITextBorderStyleRoundedRect//圆角边框
3.)背景、字体、对齐方式、密码模式设置
//设置输入框背景颜色 设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉 mTextField.backgroundColor = [UIColor whiteColor]; // 设置一开始就输入的内容 mTextField.text=@"我是总李"; // 设置是否是密码模式 mTextField.secureTextEntry = NO; //在没有输入内容时 提示输入提示 mTextField.placeholder = @"请输入密码"; //设置输入框字体颜色 mTextField.textColor=[UIColor brownColor]; //设置输入框字体大小 mTextField.font=[UIFont systemFontOfSize:17]; //设置内容对齐方式 mTextField.textAlignment = NSTextAlignmentLeft; //设置内容的垂直对齐方式 mTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
4.)清除按钮设置
//设置再次编辑是否清空 mTextField.clearsOnBeginEditing = NO; //设置输入框是否有清除按钮 什么显示 mTextField.clearButtonMode = UITextFieldViewModeAlways;
UITextFieldViewMode枚举值
- UITextFieldViewModeNever, //重不出现
- UITextFieldViewModeWhileEditing, //编辑时出现
- UITextFieldViewModeUnlessEditing, //除了编辑外都出现
- UITextFieldViewModeAlways //一直出现
5.)设置键盘样式
//设置键盘样式 mTextField.keyboardType = UIKeyboardTypeDefault;
UIKeyboardType枚举值
- UIKeyboardTypeDefault, //默认键盘,支持所有字符
- UIKeyboardTypeASCIICapable, //支持ASCII的默认键盘
- UIKeyboardTypeNumbersAndPunctuation, //标准电话键盘,支持+*#字符
- UIKeyboardTypeURL, //URL键盘,支持.com按钮 只支持URL字符
- UIKeyboardTypeNumberPad, //数字键盘
- UIKeyboardTypePhonePad, //电话键盘
- UIKeyboardTypeNamePhonePad, //电话键盘,也支持输入人名
- UIKeyboardTypeEmailAddress, //用于输入电子 邮件地址的键盘
- UIKeyboardTypeDecimalPad, //数字键盘 有数字和小数点
- UIKeyboardTypeTwitter, //优化的键盘,方便输入@、#字符
6.)设置return键
//设置return键变成什么键 mTextField.returnKeyType =UIReturnKeyNext;
UIReturnKeyType枚举值
- UIReturnKeyDefault, //默认 灰色按钮,标有Return
- UIReturnKeyGo, //标有Go的蓝色按钮
- UIReturnKeyGoogle,//标有Google的蓝色按钮,用语搜索
- UIReturnKeyJoin,//标有Join的蓝色按钮
- UIReturnKeyNext,//标有Next的蓝色按钮
- UIReturnKeyRoute,//标有Route的蓝色按钮
- UIReturnKeySearch,//标有Search的蓝色按钮
- UIReturnKeySend,//标有Send的蓝色按钮
- UIReturnKeyYahoo,//标有Yahoo的蓝色按钮
- UIReturnKeyYahoo,//标有Yahoo的蓝色按钮
- UIReturnKeyEmergencyCall, //紧急呼叫按钮
7.) 设置键盘外观
//设置键盘外观 mTextField.keyboardAppearance=UIKeyboardAppearanceDefault;
UIKeyboardAppearance枚举值
- UIKeyboardAppearanceDefault,//默认外观,浅灰色
- UIKeyboardAppearanceAlert, //深灰 石墨色
8.)设置是否纠错
//设置是否纠错 mTextField.autocorrectionType = UITextAutocorrectionTypeYes;
UITextAutocorrectionType枚举值
- UITextAutocorrectionTypeDefault,// 默认
- UITextAutocorrectionTypeNo, //不自动纠错
- UITextAutocorrectionTypeYes, //自动纠错
这个自动纠错每个值我都尝试了,结果并没看见实质性的效果。后续用到这个再具体看下用处。
9.)设置delegate UITextFieldDelegate
//设置代理 实现协议 mTextField.delegate = self;
UITextFieldDelegate各个函数具体职能
//返回是否允许UITextField开始编辑 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ NSLog(@"textFieldShouldBeginEditing"); return YES; } //开始编辑时触发,文本字段将成为first responder - (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"textFieldDidBeginEditing"); [textField becomeFirstResponder]; } //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { NSLog(@"textFieldShouldEndEditing"); return YES; } //结束编辑时触发,文本字段将会让出first responder - (void)textFieldDidEndEditing:(UITextField *)textField { NSLog(@"textFieldDidEndEditing"); } // 返回是否允许编辑内容改变 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSLog(@"shouldChangeCharactersInRange"); NSInteger strLength = textField.text.length - range.length + string.length; return (strLength <= 10); } //返回是否允许用户清除输入内容 - (BOOL)textFieldShouldClear:(UITextField *)textField { NSLog(@"textFieldShouldClear"); return NO; } //返回是否允许在按下回车键时结束编辑 - (BOOL)textFieldShouldReturn:(UITextField *)textField { NSLog(@"textFieldShouldReturn"); [textField resignFirstResponder]; return NO; }
上面的函数每个值实测有效,但是textFieldShouldReturn无论返回YES或者NO效果都是一样的,具体区别暂时我还不知道。
总结:
今天学习总结了自己最近参与项目时使用的UITextField输入框,实战中得真知,我希望自己能够快速成长起来。
干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!