2023年7月13日发(作者:)
iOS中UITextField使⽤全⾯解析//初始化textfield并设置位置及⼤⼩ UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];//设置边框样式,只有设置了才会显⽰边框样式 Style = UITextBorderStyleRoundedRect; typedef enum {UITextBorderStyleNone,
UITextBorderStyleLine,UITextBorderStyleBezel,UITextBorderStyleRoundedRect
} UITextBorderStyle;//设置输⼊框的背景颜⾊,此时设置为⽩⾊ 如果使⽤了⾃定义的背景图⽚边框会被忽略掉 oundColor = [UIColor whiteColor];//设置背景 ound = [UIImage p_w_picpathNamed:@""];//设置背景
edBackground = [UIImage p_w_picpathNamed:@""];//当输⼊框没有内容时,⽔印提⽰ 提⽰内容为password older = @"password";//设置输⼊框内容的字体样式和⼤⼩ = [UIFont fontWithName:@"Arial" size:20.0f];//设置字体颜⾊ lor = [UIColor redColor];//输⼊框中是否有个叉号,在什么时候显⽰,⽤于⼀次性删除输⼊框中的内容 uttonMode = UITextFieldViewModeAlways;typedef enum {UITextFieldViewModeNever, 重不出现UITextFieldViewModeWhileEditing, 编辑时出现UITextFieldViewModeUnlessEditing, 除了编辑外都出现UITextFieldViewModeAlways ⼀直出现} UITextFieldViewMode;//输⼊框中⼀开始就有的⽂字 = @"⼀开始就在输⼊框的⽂字";//每输⼊⼀个字符就变成点 ⽤语密码输⼊ TextEntry = YES;//是否纠错 rrectionType = UITextAutocorrectionTypeNo;typedef enum {UITextAutocorrectionTypeDefault, 默认UITextAutocorrectionTypeNo, 不⾃动纠错UITextAutocorrectionTypeYes, ⾃动纠错} UITextAutocorrectionType;//再次编辑就清空 OnBeginEditing = YES;
//内容对齐⽅式 ignment = UITextAlignmentLeft;//内容的垂直对齐⽅式 UITextField继承⾃UIControl,此类中有⼀个属性contentVerticalAlignment tVerticalAlignment = UIControlContentVerticalAlignmentCenter;//设置为YES时⽂本会⾃动缩⼩以适应⽂本窗⼝⼤⼩.默认是保持原来⼤⼩,⽽让长⽂本滚动 sFontSizeToFitWidth = YES;//设置⾃动缩⼩显⽰的最⼩字体⼤⼩ mFontSize = 20;//设置键盘的样式 rdType = UIKeyboardTypeNumberPad;typedef enum {UIKeyboardTypeDefault, 默认键盘,⽀持所有字符UIKeyboardTypeASCIICapable, ⽀持ASCII的默认键盘UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,⽀持+*#字符UIKeyboardTypeURL, URL键盘,⽀持.com按钮 只⽀持URL字符UIKeyboardTypeNumberPad, 数字键盘UIKeyboardTypePhonePad, 电话键盘UIKeyboardTypeNamePhonePad, 电话键盘,也⽀持输⼊⼈名UIKeyboardTypeEmailAddress, ⽤于输⼊电⼦ 邮件地址的键盘UIKeyboardTypeDecimalPad, 数字键盘 有数字和⼩数点UIKeyboardTypeTwitter, 优化的键盘,⽅便输⼊@、#字符UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;//⾸字母是否⼤写 pitalizationType = UITextAutocapitalizationTypeNone;typedef enum {UITextAutocapitalizationTypeNone, 不⾃动⼤写UITextAutocapitalizationTypeWords, 单词⾸字母⼤写UITextAutocapitalizationTypeSentences, 句⼦的⾸字母⼤写UITextAutocapitalizationTypeAllCharacters, 所有字母都⼤写} UITextAutocapitalizationType;//return键变成什么键 KeyType =UIReturnKeyDone;typedef enum {UIReturnKeyDefault, 默认 灰⾊按钮,标有ReturnUIReturnKeyGo, 标有Go的蓝⾊按钮UIReturnKeyGoogle,标有Google的蓝⾊按钮,⽤语搜索UIReturnKeyJoin,标有Join的蓝⾊按钮UIReturnKeyNext,标有Next的蓝⾊按钮UIReturnKeyRoute,标有Route的蓝⾊按钮UIReturnKeySearch,标有Search的蓝⾊按钮UIReturnKeySend,标有Send的蓝⾊按钮UIReturnKeyYahoo,标有Yahoo的蓝⾊按钮UIReturnKeyYahoo,标有Yahoo的蓝⾊按钮UIReturnKeyEmergencyCall, 紧急呼叫按钮} UIReturnKeyType;//键盘外观rdAppearance=UIKeyboardAppearanceDefault;typedef enum {UIKeyboardAppearanceDefault, 默认外观,浅灰⾊UIKeyboardAppearanceAlert, 深灰 ⽯墨⾊} UIReturnKeyType;//设置代理 ⽤于实现协议 te = self;//把textfield加到视图中 [ addSubview:text];//最右侧加图⽚是以下代码 左侧类似UIImageView *p_w_picpath=[[UIImageView alloc] initWithImage:[UIImage p_w_picpathNamed:@""]];iew=p_w_picpath;iewMode = UITextFieldViewModeAlways;
typedef enum {UITextFieldViewModeNever,UITextFieldViewModeWhileEditing,UITextFieldViewModeUnlessEditing,UITextFieldViewModeAlwaysUITextFieldViewModeAlways} UITextFieldViewMode;//按return键键盘往下收 becomeFirstResponder类要采⽤UITextFieldDelegate协议te = self; 声明text的代理是我,我会去实现把键盘往下收的⽅法 这个⽅法在UITextFieldDelegate⾥所以我们要采⽤UITextFieldDelegate这个协议- (BOOL)textFieldShouldReturn:(UITextField *)textField{[text resignFirstResponder]; //主要是[receiver resignFirstResponder]在哪调⽤就能把receiver对应的键盘往下收return 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类特有的事件UITextFieldTextDidBeginEditingNotificationUITextFieldTextDidChangeNotificationUITextFieldTextDidEndEditingNotification当⽂本字段退出编辑模式时触发。通知的object属性存储了最终⽂本。因为⽂本字段要使⽤键盘输⼊⽂字,所以下⾯这些事件发⽣时,也会发送动作通知UIKeyboardWillShowNotification //键盘显⽰之前发送UIKeyboardDidShowNotification //键盘显⽰之后发送UIKeyboardWillHideNotification //键盘隐藏之前发送UIKeyboardDidHideNotification //键盘隐藏之后发送12、Adjust To Fit : 指定当⽂本框尺⼨减⼩时,⽂本框中的⽂本是否也要缩⼩。选择它,可以使得全部⽂本都可见,即使⽂本很长。但是这个选项要跟 Min Font Size 配合使⽤,接下来的部分⽤于设置键盘如何显⽰。13、Captitalization : 设置⼤写。下拉菜单中有四个选项:13.1 None : 不设置⼤写13.2 Words : 每个单词⾸字母⼤写,这⾥的单词指的是以空格分开的字符串13.3 Sentances : 每个句⼦的第⼀个字母⼤写,这⾥的句⼦是以句号加空格分开的字符串13.4 All Characters : 所以字母⼤写14、Correction : 检查拼写,默认是 YES 。15、Keyboard : 选择键盘类型,⽐如全数字、字母和数字等。16、Appearance:17、Return Key : 选择返回键,可以选择 Search 、 Return 、 Done 等。18、Auto-enable Return Key : 如选择此项,则只有⾄少在⽂本框输⼊⼀个字符后键盘的返回键才有效。19、Secure : 当你的⽂本框⽤作密码输⼊框时,可以选择这个选项,此时,字符显⽰为星号。 Enabled(可⽤) Highlighted(⾼亮)限制只能输⼊特定的字符(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{NSCharacterSet *cs;cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串BOOL canChange = [string isEqualToString:filtered];return canChange;}上⾯那个NUMBERS是⼀个宏,可以在⽂件顶部定义:#define NUMBERS @”n” (这个代表可以输⼊数字和换⾏,请注意这个n,如果不写这个,Done按键将不会触发,如果⽤在SearchBar中,将会不触发Search事件,所以,如果你要限制输⼊英⽂和数字的话,就可以把这个定义为:#define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz″。#define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz″。当然,你还可以在以上⽅法return之前,做⼀提⽰的,⽐如提⽰⽤户只能输⼊数字之类的。如果你觉得有需要的话。限制只能输⼊⼀定长度的字符- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //string就是此时输⼊的那个字符 textField就是此时正在输⼊的那个输⼊框 返回YES就是可以改变输⼊框的值 NO相反 if ([string isEqualToString:@"n"]) { //按会车可以改变
return YES;
}
NSString * toBeString = [ stringByReplacingCharactersInRange:range withString:string]; //得到输⼊框的内容 if (Field == textField) {
//判断是否时我们想要限定的那个输⼊框 if ([toBeString length] > 20) { //如果输⼊框内容⼤于20则弹出警告 = [toBeString substringToIndex:20];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超过最⼤字数不能输⼊了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autoreleas [alert show];
return NO;
}
}
return YES;
}
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689263936a226397.html
评论列表(0条)