21.UITextField
2016-05-23 17:56
417 查看
UITextField
显示效果
外框设置
背景设置
字体设置
键盘设置
字母设置
改变return键
文本位置
其他设置
协议 函数
纠错功能
键盘收回
编辑状态
通知事件
限制输入
限制只能输入特定的字符
限制只能输入一定长度的字符
显示效果
外框设置
背景设置
字体设置
键盘设置
字母设置
改变return键
文本位置
其他设置
协议 函数
纠错功能
键盘收回
编辑状态
通知事件
限制输入
限制只能输入特定的字符
限制只能输入一定长度的字符
UITextField
显示效果
外框设置
//如果自定义了背景图片会被忽略此功能 //UITextBorderStyleNone: 正常 //UITextBorderStyleLine 粗线条 //UITextBorderStyleBezel 挡板(透明) //UITextBorderStyleRoundedRect 圆角 text.borderStyle = UITextBorderStyleRoundedRect;
背景设置
//背景颜色 textFiled.backgroundColor = [UIColor whiteColor]; textFiled.disabledBackground = [UIImage imageNamed:@"cc.png"];
字体设置
//设置字体和大小 textFiled.font = [UIFont fontWithName:@"Arial" size:20.0f]; //设置字体颜色 textFiled.textColor = [UIColor redColor];
键盘设置
//键盘样式 //UIKeyboardTypeDefault 默认键盘,支持所有字符 //UIKeyboardTypeASCIICapable 支持ASCII的默认键盘 //UIKeyboardTypeNumbersAndPunctuation 标准电话键盘,支持+*#字符 //UIKeyboardTypeURL URL键盘,支持.com按钮 只支持URL字符 //UIKeyboardTypeNumberPad 数字键盘 //UIKeyboardTypePhonePad 电话键盘 //UIKeyboardTypeNamePhonePad 电话键盘,也支持输入人名 //UIKeyboardTypeEmailAddress 用于输入电子 邮件地址的键盘 //UIKeyboardTypeDecimalPad 数字键盘 有数字和小数点 //UIKeyboardTypeTwitter 优化的键盘,方便输入@、#字符 //UIKeyboardTypeAlphabet textFiled.keyboardType = UIKeyboardTypeNumberPad; //键盘外观 //UIKeyboardAppearanceDefault 默认外观,浅灰色 //UIKeyboardAppearanceAlert 深灰 石墨色 textFiled.keyboardAppearance=UIKeyboardAppearanceDefault;
字母设置
//UITextAutocapitalizationTypeNone 不自动大写 //UITextAutocapitalizationTypeWords 单词首字母大写 //UITextAutocapitalizationTypeSentences 句子的首字母大写 //UITextAutocapitalizationTypeAllCharacters 所有字母都大写 textFiled.autocapitalizationType = UITextAutocapitalizationTypeNone;
改变return键
//UIReturnKeyDefault 默认 灰色按钮,Return按键 //UIReturnKeyGo Go的蓝色按钮 //UIReturnKeyGoogle Google的蓝色按钮,用语搜索 //UIReturnKeyJoin Join的蓝色按钮 //UIReturnKeyNext Next的蓝色按钮 //UIReturnKeyRoute Route的蓝色按钮 //UIReturnKeySearch Search的蓝色按钮 //UIReturnKeySend Send的蓝色按钮 //UIReturnKeyYahoo Yahoo的蓝色按钮 //UIReturnKeyEmergencyCall 紧急呼叫按钮 textFiled.returnKeyType =UIReturnKeyDone;
文本位置
//UIControlContentVerticalAlignmentFill 填满 //UIControlContentVerticalAlignmentCenter 居中 //UIControlContentVerticalAlignmentButtom 底部 //UIControlContentVerticalAlignmentTop 顶部 textFiled.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
其他设置
//输入框添加小叉,用于清除输入的内容 //UITextFieldViewModeNever 从不出现 //UITextFieldViewModeWhileEditing, 编辑时出现 //UITextFieldViewModeUnlessEditing 除了编辑外都出现 //UITextFieldViewModeAlways 一直出现 textFiled.clearButtonMode = UITextFieldViewModeAlways; //为输入框输入内容 textFiled.text = @"内容"; //是否可以拖动 textFiled.scrollEnabled = YES //以*隐藏输入的内容 textFiled.secureTextEntry = YES; //再次编辑清空输入框内容 text.clearsOnBeginEditing = YES; //根据文本自动缩小以适应窗口 textFied.adjustsFontSizeToFitWidth = YES; //缩小最小显示字体大小 text.minimumFontSize = 20;
协议 函数
需要添加协议UITextFieldDelegate以及设置text.delegate = self;纠错功能
//UITextAutocorrectionTypeDefault 默认(不开启) //UITextAutocorrectionTypeNo 不自动纠错 //UITextAutocorrectionTypeYes 自动纠错 text.autocorrectionType = UITextAutocorrectionTypeNo; - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。 //这对于想要加入撤销选项的应用程序特别有用 //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。 //要防止文字被改变可以返回NO //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中 return YES; }
键盘收回
- (BOOL)textFieldShouldReturn:(UITextField *)textField{ //按return键收回键盘 //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收 [textFiled resignFirstResponder]; return YES; }
编辑状态
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ //返回一个BOOL值,指定是否循序文本字段开始编辑 return YES; } - (void)textFieldDidBeginEditing:(UITextField *)textField{ //开始编辑时触发,文本字段将成为first responder } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder //要想在用户结束编辑时阻止文本字段消失,可以返回NO //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息 return NO; } - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。 //这对于想要加入撤销选项的应用程序特别有用 //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。 //要防止文字被改变可以返回NO //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中 return YES; } - (BOOL)textFieldShouldClear:(UITextField *)textField{ //返回一个BOOL值指明是否允许根据用户请求清除内容 //可以设置在特定条件下才允许清除内容 return YES; } -(BOOL)textFieldShouldReturn:(UITextField *)textField{ //返回一个BOOL值,指明是否允许在按下回车键时结束编辑 //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder]; //查一下resign这个单词的意思就明白这个方法了 return YES; }
通知事件
UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件 UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification 当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。 因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知 UIKeyboardWillShowNotification //键盘显示之前发送 UIKeyboardDidShowNotification //键盘显示之后发送 UIKeyboardWillHideNotification //键盘隐藏之前发送 UIKeyboardDidHideNotification //键盘隐藏之后发送
限制输入
限制只能输入特定的字符
//限制数字的宏 #define NUMBERS @”0123456789n” (这个代表可以输入数字和换行,请注意这个n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入n) //限制输入数字和字母的宏 #define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet]; //按cs分离出数组,数组按@""分离出字符串 NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; BOOL canChange = [string isEqualToString:filtered]; return canChange; }
限制只能输入一定长度的字符
//string就是此时输入的那个字符,textField就是此时正在输入的那个输入框 YES是可改变输入框的值 NO相反 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ //按会车可以改变 if ([string isEqualToString:@"n"]) { return YES; } //得到输入框的内容 NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //判断是否时我们想要限定的那个输入框 if (self.myTextField == textField) { //如果输入框内容大于20则弹出警告 if ([toBeString length] > 20) { textField.text = [toBeString substringToIndex:20]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; return NO; } } return YES; }
相关文章推荐
- Request获取用户真实IP
- Sketch设计UI的知识总结
- 动态规划——unique-paths
- 获取Request中Cookie的值
- We are unable to process your request. An unknown error occurred.
- UI配置的代码实现
- UGUI下拉列表的封装
- iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
- Ural 1081 Binary Lexicographic Sequence
- 加速android studio build 速度
- Angular服务Request异步请求的详细分析
- 03.LoT.UI 前后台通用框架分解系列之——多样的表格
- UITextField 的clearButton
- java应用测试报告生成(二):利用ant的build.xml生成测试报告
- iOS学习之——UIStoryboard
- B - Longest Ordered Subsequence——HOJ
- 运行mysql5.x版本的时候,出现错误: [Err] 1366 - Incorrect integer value: '' for column 'Fbirthday' at row 1
- The request sent by the client was syntactically incorrect.
- [BS-25] IOS中手势UIGestureRecognizer概述
- iOS开发——Autolayout的Top Layout guide问题