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


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。