IOS控件布局之UITextField使用

前言:

    在iOS中使用UITextField用于外部数据的输入,其功能相当于Android中的EditText,这几天发现一个特别现象,iOS控件的命名特别类似Java swing或者awt这种的命名,比如UITextField 在Java中的命名为JTextField,然而Android的控件命名居然没有参考本身使用的开发语言Java来进行参考,比如可以命名为ATextField,哈哈,这点看着还蛮有意思的。

UITextField使用

1.)初始化

 //第一种
 UITextField *mTextField=[[UITextField alloc]init];
 //第二种
 UITextField *mTextField =[[UITextField alloc]initWithFrame:CGRectMake(0, 50, SCREEN_WIDTH, 50)];

2.)边框样式设置

 //设置输入框边框样式
 mTextField.borderStyle=UITextBorderStyleRoundedRect;

UITextBorderStyle枚举

  • UITextBorderStyleNone,//无框
  • UITextBorderStyleLine,//线框
  • UITextBorderStyleBezel,//bezel风格线框
  • UITextBorderStyleRoundedRect//圆角边框 

3.)背景、字体、对齐方式、密码模式设置

    //设置输入框背景颜色 设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉
    mTextField.backgroundColor = [UIColor whiteColor];
    // 设置一开始就输入的内容
    mTextField.text=@"我是总李";
    // 设置是否是密码模式
    mTextField.secureTextEntry = NO;
    //在没有输入内容时 提示输入提示
    mTextField.placeholder = @"请输入密码";
    //设置输入框字体颜色
    mTextField.textColor=[UIColor brownColor];
    //设置输入框字体大小
    mTextField.font=[UIFont systemFontOfSize:17];
    //设置内容对齐方式
    mTextField.textAlignment = NSTextAlignmentLeft;
    //设置内容的垂直对齐方式
    mTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

4.)清除按钮设置

   //设置再次编辑是否清空
    mTextField.clearsOnBeginEditing = NO;
    //设置输入框是否有清除按钮 什么显示
    mTextField.clearButtonMode = UITextFieldViewModeAlways;

UITextFieldViewMode枚举值

  • UITextFieldViewModeNever, //重不出现
  • UITextFieldViewModeWhileEditing, //编辑时出现
  • UITextFieldViewModeUnlessEditing, //除了编辑外都出现
  • UITextFieldViewModeAlways  //一直出现

5.)设置键盘样式

 //设置键盘样式
 mTextField.keyboardType = UIKeyboardTypeDefault;

UIKeyboardType枚举值

  • UIKeyboardTypeDefault,      //默认键盘,支持所有字符
  • UIKeyboardTypeASCIICapable, //支持ASCII的默认键盘
  • UIKeyboardTypeNumbersAndPunctuation, //标准电话键盘,支持+*#字符
  • UIKeyboardTypeURL,            //URL键盘,支持.com按钮 只支持URL字符
  • UIKeyboardTypeNumberPad,      //数字键盘
  • UIKeyboardTypePhonePad,      //电话键盘
  • UIKeyboardTypeNamePhonePad,  //电话键盘,也支持输入人名
  • UIKeyboardTypeEmailAddress,  //用于输入电子 邮件地址的键盘
  • UIKeyboardTypeDecimalPad,    //数字键盘 有数字和小数点
  • UIKeyboardTypeTwitter,       //优化的键盘,方便输入@、#字符

 6.)设置return键

 //设置return键变成什么键
 mTextField.returnKeyType =UIReturnKeyNext;

UIReturnKeyType枚举值

  • UIReturnKeyDefault, //默认 灰色按钮,标有Return
  • UIReturnKeyGo,    //标有Go的蓝色按钮
  • UIReturnKeyGoogle,//标有Google的蓝色按钮,用语搜索
  • UIReturnKeyJoin,//标有Join的蓝色按钮
  • UIReturnKeyNext,//标有Next的蓝色按钮
  • UIReturnKeyRoute,//标有Route的蓝色按钮
  • UIReturnKeySearch,//标有Search的蓝色按钮
  • UIReturnKeySend,//标有Send的蓝色按钮
  • UIReturnKeyYahoo,//标有Yahoo的蓝色按钮
  • UIReturnKeyYahoo,//标有Yahoo的蓝色按钮
  • UIReturnKeyEmergencyCall, //紧急呼叫按钮

7.) 设置键盘外观

//设置键盘外观
mTextField.keyboardAppearance=UIKeyboardAppearanceDefault;

UIKeyboardAppearance枚举值

  • UIKeyboardAppearanceDefault,//默认外观,浅灰色
  • UIKeyboardAppearanceAlert, //深灰 石墨色

8.)设置是否纠错

 //设置是否纠错
 mTextField.autocorrectionType = UITextAutocorrectionTypeYes;

UITextAutocorrectionType枚举值

  • UITextAutocorrectionTypeDefault,// 默认
  • UITextAutocorrectionTypeNo,  //不自动纠错
  • UITextAutocorrectionTypeYes, //自动纠错

这个自动纠错每个值我都尝试了,结果并没看见实质性的效果。后续用到这个再具体看下用处。

 9.)设置delegate UITextFieldDelegate

//设置代理 实现协议
mTextField.delegate = self;

UITextFieldDelegate各个函数具体职能

//返回是否允许UITextField开始编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    NSLog(@"textFieldShouldBeginEditing");
    return YES;
}
 //开始编辑时触发,文本字段将成为first responder
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"textFieldDidBeginEditing");
    [textField becomeFirstResponder];
}

//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    NSLog(@"textFieldShouldEndEditing");
    return YES;
}
//结束编辑时触发,文本字段将会让出first responder
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"textFieldDidEndEditing");
}

// 返回是否允许编辑内容改变
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"shouldChangeCharactersInRange");
    NSInteger strLength = textField.text.length - range.length + string.length;
    
    return (strLength <= 10);
}

//返回是否允许用户清除输入内容
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    NSLog(@"textFieldShouldClear");
    return NO;
}

//返回是否允许在按下回车键时结束编辑
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"textFieldShouldReturn");
    [textField resignFirstResponder];
    return NO;
}

上面的函数每个值实测有效,但是textFieldShouldReturn无论返回YES或者NO效果都是一样的,具体区别暂时我还不知道。

总结:

   今天学习总结了自己最近参与项目时使用的UITextField输入框,实战中得真知,我希望自己能够快速成长起来。

 

posted on 2017-01-21 15:43  总李写代码  阅读(625)  评论(0编辑  收藏  举报