IOS基础-UITextField
UITextField通常用于外部文字输入,就是常见的输入框.如下用代码详细说明UITextField的各种属性和方法
- (void)viewDidLoad { [super viewDidLoad]; //文本输入框 UITextField UITextField *textField = [[UITextField alloc] init]; //设置 textField.frame = CGRectMake(50, 50, 200, 200); //设置输入框中的文本 默认为空 textField.text = nil; //设置输入框中的属性字符串,默认为空 如果不理解属性字符串,可以跳过 textField.attributedText = nil; //设置默认的属性字符串 textField.defaultTextAttributes = nil; //设置默认显示的属性字符串 textField.attributedPlaceholder = nil; //设置输入框的文本颜色,默认为空,可不设置,因为系统设置为黑色 textField.textColor = [UIColor blackColor]; //设置背景颜色 textField.backgroundColor = [UIColor greenColor]; //设置输入框的字体,默认为空,可不设置,系统默认设置12pt textField.font = [UIFont systemFontOfSize:18.0]; //设置背景图片 只有当设置外框类型为UITextBorderStyleNone时才有效 //textField.background = [UIImage imageNamed:@"1.png"]; //textField.disabledBackground = [UIImage imageNamed:@"2.png"]; //设置输入框变为密码框 每输入一个字符就变成点 textField.secureTextEntry = NO; /* typedef NS_ENUM(NSInteger, NSTextAlignment) { NSTextAlignmentLeft = 0, // 左对齐 #if iphone NSTextAlignmentCenter = 1, // 居中 NSTextAlignmentRight = 2, // 右对齐 #else ipad NSTextAlignmentRight = 1, // Visually right aligned NSTextAlignmentCenter = 2, // Visually centered #endif 其他 NSTextAlignmentJustified = 3, // 和段落对齐 NSTextAlignmentNatural = 4, // 默认状态 正常情况下 } NS_ENUM_AVAILABLE_IOS(6_0); */ //设置输入框的文字显示模式 textField.textAlignment = NSTextAlignmentNatural; //设置默认显示的文字 70%透明度 textField.placeholder = @"请输入文字"; /* typedef NS_ENUM(NSInteger, UITextBorderStyle) { UITextBorderStyleNone, //无边框 UITextBorderStyleLine, //方角矩形 实线 UITextBorderStyleBezel, //方角矩形 实线 UITextBorderStyleRoundedRect //圆角矩形 带有透明度的线条 };*/ //设置外框类型 textField.borderStyle = UITextBorderStyleNone; //设置输入框字体最小值 textField.minimumFontSize = 18.0; //设置为YES时文本会自动缩小以适应文本窗口大小,默认是保持原来大小,而让长文本滚动 textField.adjustsFontSizeToFitWidth = NO; /* ypedef NS_ENUM(NSInteger, UIKeyboardType) { UIKeyboardTypeDefault, // 默认状态,支持所有字符 UIKeyboardTypeASCIICapable, // 可以输入ASCII码 UIKeyboardTypeNumbersAndPunctuation, // 数字和标点符号 UIKeyboardTypeURL, // 字母和url(com) UIKeyboardTypeNumberPad, // 数字键盘 UIKeyboardTypePhonePad, // 数字带+*# 电话键盘 UIKeyboardTypeNamePhonePad, // 电话键盘支持输入人名 UIKeyboardTypeEmailAddress, // 字母带@. 输入电子邮件 UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // 数字键盘带. UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // 字母带@# UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // 字母带 前往 按钮 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // 可以输入ASCII码 首字母大写 }; */ //设置键盘的样式 textField.keyboardType = UIKeyboardTypeURL; //当再次编辑输入框时 输入框的内容就会被清空 textField.clearsOnBeginEditing = NO; //首字母是否大写 /* typedef NS_ENUM(NSInteger, UITextAutocapitalizationType) { UITextAutocapitalizationTypeNone, //全部小写 UITextAutocapitalizationTypeWords, //每个单词(中间有空格)的首字母大写 UITextAutocapitalizationTypeSentences, //第一个单词的首字母大写 UITextAutocapitalizationTypeAllCharacters, //全部大写 }; */ textField.autocapitalizationType = UITextAutocapitalizationTypeNone; /* 输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内 typedef NS_ENUM(NSInteger, UITextFieldViewMode) { UITextFieldViewModeNever, //默认显示没有 UITextFieldViewModeWhileEditing, //输入时显示有叉号 UITextFieldViewModeUnlessEditing, //不输入时显示有叉号 UITextFieldViewModeAlways //一直显示有叉号, }; */ textField.clearButtonMode = UITextFieldViewModeWhileEditing ; /* typedef enum { UITextAutocorrectionTypeDefault, 默认 UITextAutocorrectionTypeNo, 不自动纠错 UITextAutocorrectionTypeYes, 自动纠错 } UITextAutocorrectionType; */ //是否纠错 textField.autocorrectionType = UITextAutocorrectionTypeNo; /* typedef NS_ENUM(NSInteger, UIReturnKeyType) { UIReturnKeyDefault, //return键显示默认状态 return UIReturnKeyGo, //return键显示Go UIReturnKeyGoogle, //return键显示Search UIReturnKeyJoin, //return键显示Join 加入 UIReturnKeyNext, //return键显示next 下一个 UIReturnKeyRoute, //return键显示Route UIReturnKeySearch, //return键显示Search 搜索 UIReturnKeySend, //return键显示Send 发送 UIReturnKeyYahoo, //return键显示Search UIReturnKeyDone, //return建显示Done UIReturnKeyEmergencyCall, }; */ //设置return键的类型 textField.returnKeyType = UIReturnKeyDefault; /* typedef NS_ENUM(NSInteger, UIKeyboardAppearance) { UIKeyboardAppearanceDefault, //默认外观 浅灰色 UIKeyboardAppearanceDark //深灰 石墨色 UIKeyboardAppearanceLight //浅灰色 UIKeyboardAppearanceAlert = UIKeyboardAppearanceDark, // 深灰 石墨色 }; */ //设置键盘的外观 textField.keyboardAppearance = UIKeyboardAppearanceDefault; //设置输入文字之间位置的view UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]]; image.bounds = CGRectMake(0, 0, 10, 10); textField.leftView = image; //显示状态和 叉号 显示状态类似 textField.leftViewMode = UITextFieldViewModeAlways; //设置输入框内部右侧位置的view UIImageView *image1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"2"]]; image1.bounds = CGRectMake(0, 0, 10, 10); textField.rightView = image1; //显示状态和 叉号 显示状态类似 textField.rightViewMode = UITextFieldViewModeAlways; textField.delegate = self; [self.view addSubview:textField]; } /* 重写绘制的各种方法 //重写来重置边缘区域 - (CGRect)borderRectForBounds:(CGRect)bounds; //重写来重置文字区域 - (CGRect)textRectForBounds:(CGRect)bounds; //重写来重置占位符区域 也就是默认显示的区域 - (CGRect)placeholderRectForBounds:(CGRect)bounds; //重写来重置编辑区域 - (CGRect)editingRectForBounds:(CGRect)bounds; //重写来重置clearButton位置,改变size可能导致button的图片失真 - (CGRect)clearButtonRectForBounds:(CGRect)bounds; //重写来重置左边view区域 - (CGRect)leftViewRectForBounds:(CGRect)bounds; //重写来重置右边view区域 - (CGRect)rightViewRectForBounds:(CGRect)bounds; //重写绘制改变文字属性,重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super - (void)drawTextInRect:(CGRect)rect; //重写绘制改变占位符属性,重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super - (void)drawPlaceholderInRect:(CGRect)rect; */ #pragma mark - UITextFieldDelegate //设置输入框,是否可以被修改 // NO将无法修改,不出现键盘 // YES可以修改,默认值 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { return YES; } //开始编辑时获得焦点时,执行该方法 - (void)textFieldDidBeginEditing:(UITextField *)textField { } /* 返回BOOL值,指定是否允许文本字段接触,当编辑结束,文本字段会让出first responder 要想再用户结束编辑时阻止文本字段消失,可以返回NO 这对一些文本字段必须始终保持活跃状态的程序很有用,比如即使消息 */ - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { return NO; } //文本框结束编辑以后会调用 - (void)textFieldDidEndEditing:(UITextField *)textField { } /* 当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法 这对于想要加入撤销选项的应用程序特别有用 可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用做审计用途 要防止文字被改变可以返回NO 这个方法的参数中又一个NSRange对象,指明了被改变文字的位置,建议修改的文本也再其中 */ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { return YES; } //返回一个BOOL值指明是否允许根据用户请求清除内容 //可以设置在特定条件下才允许清除内容 - (BOOL)textFieldShouldClear:(UITextField *)textField { return YES; } //返回一个BOOL值,指明是否允许在按下回车键时结束编辑 //如果允许要调用resignFirstResponder方法,会导致结束编辑,而键盘会被手气 - (BOOL)textFieldShouldReturn:(UITextField *)textField { return YES; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。