21.UITextField

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; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值