一、初始化并设置位置及大小
UITextField
*text = [[UITextField
alloc]initWithFrame:CGRectMake(20,
20,
130,
30)];
[self.view
addSubview:text];
二、UITextField 的常用属性
(1)设置样式
1、borderStyle - 设置边框样式
text.borderStyle
=
UITextBorderStyleRoundedRect;
- UITextBorderStyleNone - 无边框
- UITextBorderStyleLine - 有边框,直线
- UITextBorderStyleBezel - 有边框和阴影(上边框和左边框加重)
- UITextBorderStyleRoundedRect - 圆角
2、 backgroundColor - 设置输入框的背景颜色
text.backgroundColor
= [UIColor
whiteColor];
3、cornerRadius - 设置圆角
field.layer.cornerRadius=5;
field.layer.masksToBounds
=
YES;
(2)设置图片
1、background - 设置背景图片
text.background
= [UIImage
imageNamed:@"11.png"];
- 注意:当 UITextBorderStyle 的值为 UITextBorderStyleRoundedRect 时,无法设置
- 跟边框样式有冲突
2、disabledBackground - 设置在不可用的状态下的背景图片
text.enabled
=
NO;
text.disabledBackground
= [UIImage
imageNamed:@"cc.png"];
注意:如果 background 的值没有设置,则会让 disableBackground 的值失效
3、
rightView / leftView - 设置最右侧/左侧加图片
最右侧加图片的代码:(左侧类似)
UIImageView
*image=[[UIImageView
alloc]
initWithImage:[UIImage
imageNamed:@"right.png"]];
text.rightView=image;
4、rightViewMode /
leftViewMode - 设置图片的显示类型
最右侧图片显示类型的代码:(左侧类似)
text.rightViewMode
=
UITextFieldViewModeAlways;
UITextFieldViewModeNever -
UITextFieldViewModeWhileEditing - 编辑模式
UITextFieldViewModeUnlessEditing - 非编辑模式
UITextFieldViewModeAlways -
(3)设置文字
1、text - 设置输入框一开始就有的文字
2、placeholder -
默认值
text.placeholder=@"输入密码";
- 可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容。当这个文本框中输入了数据时,用于提示的灰色的字将会自动消失。
3、font - 设置输入字体
text.font
= [UIFont
fontWithName:@"Arial"
size:20.0f];
4、textColor
- 设置字体颜色
text.textColor
= [UIColor
redColor];
5、placeholder - 设置输入框内默认的文字
text.placeholder
=
@"password";
- 当输入框没有内容时,水印提示提示内容为password
6、textAlignment - 设置输入框内内容的对齐方式
text.textAlignment
=
NSTextAlignmentRight;
- NSTextAlignmentLeft - 左对齐,默认
- NSTextAlignmentCenter - 居中对齐
- NSTextAlignmentRight - 右对齐
- NSTextAlignmentJustified - 在一个段落的最后一行自然对齐
- NSTextAlignmentNatural - 默认对齐方式
7、
contentVerticalAlignment - 设置内容的垂直对齐方式
text.contentVerticalAlignment
=
UIControlContentVerticalAlignmentCenter;
- UIControlContentVerticalAlignmentCenter - 居中对齐
- UIControlContentVerticalAlignmentTop - 顶部对齐
- UIControlContentVerticalAlignmentBottom - 底部对齐
- UIControlContentVerticalAlignmentFill - 填充
8、
contentHorizontalAlignment - 水平对齐方式
UIControlContentHorizontalAlignmentCenter - 居中
UIControlContentHorizontalAlignmentLeft - 顶部
UIControlContentHorizontalAlignmentRight 底部
UIControlContentHorizontalAlignmentFill - 填充
9、
secureTextEntry - 每输入一个字符就变成点,用于密码输入
text.secureTextEntry
=
YES;
10、autocorrectionType - 是否纠错
text.autocorrectionType
=
UITextAutocorrectionTypeNo;
- UITextAutocorrectionTypeDefault - 默认
- UITextAutocorrectionTypeNo - 不自动纠错
- UITextAutocorrectionTypeYes - 自动纠错
11、clearsOnBeginEditing - 设置再次编辑是否清空
text.clearsOnBeginEditing
=
YES;
12、
minimumFontSize - 设置自动缩小显示的最小字体大小
text.minimumFontSize
=
20;
13、
adjustsFontSizeToFitWidth - 自适应文本窗口大小
text.adjustsFontSizeToFitWidth
=
YES;
- 设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
14、
autocapitalizationType - 首字母是否大写
text.autocapitalizationType
=
UITextAutocapitalizationTypeNone;
UITextAutocapitalizationTypeNone - 不自动大写
UITextAutocapitalizationTypeWords - 单词首字母大写
UITextAutocapitalizationTypeSentences - 句子的首字母大写
UITextAutocapitalizationTypeAllCharacters - 所有字母都大写
15、
contentVerticalAlignment -
字的摆设方式
text.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;
16、
Disabled - 若选中此项,用户将不能更改文本框内容
(4)clearButtonMode - 设置一个清空按钮
text.clearButtonMode
=
UITextFieldViewModeAlways;
- 通过设置 clearButtonMode 可以指定是否以及何时显示清除按钮
- 常见于密码输入错误,重新输入时会清空输入框
- UITextFieldViewModeNever - 从不显示清空按钮
- UITextFieldViewModeWhileEditing - 不为空,且在编辑状态时(即获得焦点)显示清空按钮
- UITextFieldViewModeUnlessEditing - 除了编辑状态时,都显示清空按钮
- UITextFieldViewModeAlways - 不为空,一直都显示清空按钮
(5)设置键盘
1、keyboardType - 设置键盘样式
text.keyboardType
=
UIKeyboardTypeNumberPad;
- UIKeyboardTypeDefault - 默认键盘,支持所有字符
- UIKeyboardTypeASCIICapable - 支持ASCII的默认键盘
- UIKeyboardTypeNumbersAndPunctuation - 标准电话键盘,支持+*#字符
- UIKeyboardTypeURL - URL键盘,支持.com按钮 只支持URL字符
- UIKeyboardTypeNumberPad - 数字键盘
- UIKeyboardTypePhonePad - 电话键盘
- UIKeyboardTypeNamePhonePad - 电话键盘,也支持输入人名
- UIKeyboardTypeEmailAddress - 用于输入电子 邮件地址的键盘
- UIKeyboardTypeDecimalPad - 数字键盘 有数字和小数点
- UIKeyboardTypeTwitter - 优化的键盘,方便输入@、#字符
- UIKeyboardTypeAlphabet - UIKeyboardTypeASCIICapable,
2、
returnKeyType - 返回键的样式
text.returnKeyType
=UIReturnKeyDone;
- UIReturnKeyDefault - 默认 灰色按钮,标有Return
- UIReturnKeyGo - 标有Go的蓝色按钮
- UIReturnKeyGoogle - 标有Google的蓝色按钮,用于搜索
- UIReturnKeyJoin - 标有Join的蓝色按钮
- UIReturnKeyNext - 标有Next的蓝色按钮
- UIReturnKeyRoute - 标有Route的蓝色按钮
- UIReturnKeySearch - 标有Search的蓝色按钮
- UIReturnKeySend - 标有Send的蓝色按钮
- UIReturnKeyYahoo - 标有Yahoo的蓝色按钮
- UIReturnKeyDone - 标有Done的蓝色按钮
- UIReturnKeyEmergencyCall - 紧急呼叫按钮
3、keyboardAppearance - 键盘外观
text.keyboardAppearance=UIKeyboardAppearanceDefault;
- UIKeyboardAppearanceDefault - 默认外观,浅灰色
- UIKeyboardAppearanceAlert - 深灰 石墨色
4、键盘是否隐藏
显示
[text
becomeFirstResponder];
隐藏
[text
resignFirstResponder];
5、inputView - 设置一个UIView类型的自定义键盘
6、inputAccessoryView - 设置一个键盘的自定义工具条
7、键盘类型
- UIKeyboardTypeDefault 默认键盘
- UIKeyboardTypeASCIICapable 显示ASCII码值得键盘
- UIKeyboardTypeNumbersAndPunctuation 显示数字和标点符号得键盘
- UIKeyboardTypeURL 显示带有 . / .com URL常用得符号得键盘
- UIKeyboardTypeNumberPad 显示0到9得数字键盘 不支持自动大写
- UIKeyboardTypePhonePad 显示带有0到9和“*”,“#”得键盘 不支持自动大写
- UIKeyboardTypeNamePhonePad 显示一个支持输入一个联系人名字或者号码得键盘 不支持自动大写
- UIKeyboardTypeEmailAddress 显示一个支持输入Email地址符号得键盘 “@”
- UIKeyboardTypeDecimalPad 显示0到9 和 “."得键盘
- UIKeyboardTypeAlphabet 显示一个字母键盘
(6)设置代理
text.delegate
=
self;
- 设置代理,用于实现协议<UITextFieldDelegate>
对UITextField的操作:
@protocol
UITextViewDelegate <NSObject, UIScrollViewDelegate>
@optional
- (BOOL)textViewShouldBeginEditing:(UITextView
*)textView;
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
- (void)textViewDidBeginEditing:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
- (void)textViewDidBeginEditing:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;
- (void)textViewDidChangeSelection:(UITextView
*)textView;
@end
三、UITextField 的方法
(1)、UITextField 的委托方法
- 主要是用于键盘的输入处理
- (BOOL)textFieldShouldBeginEditing:(UITextField
*)textField{
//返回一个BOOL值,指定是否循序文本字段开始编辑
return YES;
//返回一个BOOL值,指定是否循序文本字段开始编辑
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField
*)textField{
//开始编辑时触发,文本字段将成为first responder
//开始编辑时触发,文本字段将成为first responder
}
- (BOOL)textFieldShouldEndEditing:(UITextField
*)textField{
//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder
//要想在用户结束编辑时阻止文本字段消失,可以返回NO
//这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息
return NO;
//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder
//要想在用户结束编辑时阻止文本字段消失,可以返回NO
//这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息
return NO;
}
- (BOOL)textField:(UITextField*)textField
shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString
*)string{
//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。
//这对于想要加入撤销选项的应用程序特别有用
//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。
//要防止文字被改变可以返回NO
//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中
return YES;
//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。
//这对于想要加入撤销选项的应用程序特别有用
//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。
//要防止文字被改变可以返回NO
//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField
*)textField
{
{
[textField
resignFirstResponder];
//返回一个BOOL值,指明是否允许在按下回车键时结束编辑
//主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收
return YES;
return YES;
}
- (BOOL)textFieldShouldClear:(UITextField
*)textField
{
//返回一个BOOL值指明是否允许根据用户请求清除内容
//可以设置在特定条件下才允许清除内容
return YES;
{
//返回一个BOOL值指明是否允许根据用户请求清除内容
//可以设置在特定条件下才允许清除内容
return YES;
}
四、UITextField 的支持事件
(1)UITextField类特有的事件
【通知】
UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件
- UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;
- UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;
- UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;
(2)当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。
因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知
- UIKeyboardWillShowNotification //键盘显示之前发送
- UIKeyboardDidShowNotification //键盘显示之后发送
- UIKeyboardWillHideNotification //键盘隐藏之前发送
- UIKeyboardDidHideNotification //键盘隐藏之后发送