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;
}