您的位置:首页 > 产品设计 > UI/UE

21.UITextField

2016-05-23 17:56 417 查看
UITextField
显示效果
外框设置

背景设置

字体设置

键盘设置

字母设置

改变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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: