UITextField - 常用属性及设置
2016-01-11 19:42
441 查看
定义一个TextField
上面这句是设置placeHolder的颜色,placeHolderColor是自己需要的颜色
关于文本输入的提示文字设置
UITextField输入中文限制
userNameField = [[UITextField alloc] initWithFrame:CGRectMake(userNameImg.frame.origin.x+30,userNameImg.frame.origin.y, 165, 40)]; userNameField.placeholder = @"User Name"; userNameField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"手机号码" attributes:@{ NSForegroundColorAttributeName:placeHolderColor}];
上面这句是设置placeHolder的颜色,placeHolderColor是自己需要的颜色
关于文本输入的提示文字设置
textField.placeholder = @"username is in here!"; //提示文字(点击后会消失) [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; //设置提示文字颜色 [textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"]; //设置提示文字的字体大小 textField.tintColor = [UIColor greenColor]; //设置光标颜色
userNameField.backgroundColor = [UIColor clearColor]; userNameField.delegate = self; userNameField.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; userNameField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; userNameField.borderStyle = UITextBorderStyleNone; userNameField.font = [UIFont systemFontOfSize:14.0]; [self.view addSubview:userNameField];
//设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyle; UITextBorderStyleNone, UITextBorderStyleLine, UITextBorderStyleBezel, UITextBorderStyleRoundedRect }
//设置输入框的背景颜色,此时设置为白色如果使用了自定义的背景图片边框会被忽略掉 text.backgroundColor = [UIColor whiteColor];
//设置背景 text.background = [UIImage imageNamed:@"dd.png"];
//设置残缺背景 text.disabledBackground = [UIImage imageNamed:@"cc.png"];
//当输入框没有内容时,水印提示提示内容为password text.placeholder = @"password";
//设置输入框内容的字体样式和大小 text.font = [UIFont fontWithName:@"Arial" size:20.0f];
//设置字体颜色 text.textColor = [UIColor redColor];
//输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容 text.clearButtonMode = UITextFieldViewModeAlways; typedef enum { UITextFieldViewMode; UITextFieldViewModeNever, 重不出现 UITextFieldViewModeWhileEditing, 编辑时出现 UITextFieldViewModeUnlessEditing, 除了编辑外都出现 UITextFieldViewModeAlways 一直出现 }
//输入框中一开始就有的文字 text.text = @"一开始就在输入框的文字";
//每输入一个字符就变成点用语密码输入 text.secureTextEntry = YES;
//是否纠错 text.autocorrectionType = UITextAutocorrectionTypeNo; typedef enum { UITextAutocorrectionType; UITextAutocorrectionTypeDefault, 默认 UITextAutocorrectionTypeNo, 不自动纠错 UITextAutocorrectionTypeYes, 自动纠错 }
//再次编辑就清空 text.clearsOnBeginEditing = YES;
//内容对齐方式 text.textAlignment = UITextAlignmentLeft;
//内容的垂直对齐方式 UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动 textFied.adjustsFontSizeToFitWidth = YES;
//设置自动缩小显示的最小字体大小 text.minimumFontSize = 20;
//设置键盘的样式 text.keyboardType = UIKeyboardTypeNumberPad; typedef enum { UIKeyboardType; UIKeyboardTypeDefault, 默认键盘,支持所有字符 UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘 UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符 UIKeyboardTypeURL, URL键盘,支持.com按钮 只支持URL字符 UIKeyboardTypeNumberPad, 数字键盘 UIKeyboardTypePhonePad, 电话键盘 UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名 UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘 UIKeyboardTypeDecimalPad, 数字键盘 有数字和小数点 UIKeyboardTypeTwitter, 优化的键盘,方便输入@、#字符 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, }
//首字母是否大写 text.autocapitalizationType = UITextAutocapitalizationTypeNone; typedef enum { UITextAutocapitalizationType; UITextAutocapitalizationTypeNone, 不自动大写 UITextAutocapitalizationTypeWords, 单词首字母大写 UITextAutocapitalizationTypeSentences, 句子的首字母大写 UITextAutocapitalizationTypeAllCharacters, 所有字母都大写 }
//return键变成什么键 text.returnKeyType =UIReturnKeyDone; typedef enum { UIReturnKeyType; UIReturnKeyDefault, 默认 灰色按钮,标有Return UIReturnKeyGo, 标有Go的蓝色按钮 UIReturnKeyGoogle, 标有Google的蓝色按钮,用语搜索 UIReturnKeyJoin, 标有Join的蓝色按钮 UIReturnKeyNext, 标有Next的蓝色按钮 UIReturnKeyRoute, 标有Route的蓝色按钮 UIReturnKeySearch, 标有Search的蓝色按钮 UIReturnKeySend, 标有Send的蓝色按钮 UIReturnKeyYahoo, 标有Yahoo的蓝色按钮 UIReturnKeyYahoo, 标有Yahoo的蓝色按钮 UIReturnKeyEmergencyCall, 紧急呼叫按钮 }
//键盘外观 textView.keyboardAppearance=UIKeyboardAppearanceDefault; typedef enum { UIReturnKeyType; UIKeyboardAppearanceDefault, 默认外观,浅灰色 UIKeyboardAppearanceAlert, 深灰 石墨色 }
//设置代理用于实现协议 text.delegate = self;
//把textfield加到视图中 [self.window addSubview:text];
//最右侧加图片是以下代码 左侧类似 UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]]; text.rightView=image; text.rightViewMode = UITextFieldViewModeAlways; typedef enum { UITextFieldViewMode; UITextFieldViewModeNever, UITextFieldViewModeWhileEditing, UITextFieldViewModeUnlessEditing, UITextFieldViewModeAlways }
//按return键键盘往下收 becomeFirstResponder 类要采用UITextFieldDelegate协议 text.delegate = self; 声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [text resignFirstResponder]; //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收 return 4000 YES; }
重写绘制行为 除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。 – textRectForBounds: //重写来重置文字区域 – drawTextInRect: //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了. – placeholderRectForBounds: //重写来重置占位符区域 – drawPlaceholderInRect: //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了. – borderRectForBounds: //重写来重置边缘区域 – editingRectForBounds: //重写来重置编辑区域 – clearButtonRectForBounds: //重写来重置clearButton位置,改变size可能导致button的图片失真 – leftViewRectForBounds: – rightViewRectForBounds:
委托方法 - (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 //键盘隐藏之后发送
UITextField输入中文限制
[self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 输入改变的时候监听限制输入 - (void)textFieldDidChange:(UITextField *)textField { NSString *toBeString = textField.text; NSArray *currentar = [UITextInputMode activeInputModes]; UITextInputMode *current = [currentar firstObject]; //下面的方法是iOS7被废弃的,注释 // NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式 if ([current.primaryLanguage isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写 UITextRange *selectedRange = [textField markedTextRange]; //获取高亮部分 UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { if (toBeString.length > 20) { textField.text = [toBeString substringToIndex:20]; } } // 有高亮选择的字符串,则暂不对文字进行统计和限制 else { } } // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 else { if (toBeString.length > 20) { textField.text = [toBeString substringToIndex:20]; } } NSLog(@"%@",textField.text); }
相关文章推荐
- MySQL 数据库对服务器端光标的限制
- extjs form textfield的隐藏方法
- jQuery往textarea中光标所在位置插入文本的方法
- bash脚本输入密码不回显问题的解决方法
- javascript获得光标所在的文本框(text/textarea)中的位置
- 使用focus方法让光标默认停留在INPUT框
- .NET中实现彩色光标、动画光标及自定义光标的方法
- Javascript实现获取及设置光标位置的方法
- Linux平台下第三方软件中使用光标键乱码的问题处理
- extjs的textfield禁止输入某些字符
- 获得输入框光标位置
- shell chown改变文件属主命令
- CentOS下一键安装OpenStack
- JQuery扩展:TextArea在光标处插入文本
- GUI 图形化用户界面 监听机制
- textfield详解 (转)
- iOS textField详细解析(转)
- UITextView光标位置的设置
- ext文本框TextField的处理事件
- UITextField的文本特征属性