UITextField

一. 占位符颜色字体修改

_textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"*****" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16],NSForegroundColorAttributeName:[UIColor redColor]}];

只需要在初始化的时候设置attributedPlaceholder即富文本的占位文本

二. 限制字符长度

1. [self.nameTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];

- (void)textFieldDidChanged:(UITextField*)textField {

    // 判断是否存在高亮字符,如果有,则不进行字数统计和字符串截断

    UITextRange*selectedRange = textField.markedTextRange;

    UITextPosition*position = [textFieldpositionFromPosition:selectedRange.startoffset:0];

    if(position) {

        return;

    }

    // 判断是否超过最大字数限制,如果超过就截断

    if(textField.text.length>16) {

        textField.text= [textField.textsubstringToIndex:16];

    }

}

2.- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if (textField == self.nameTextField) {

    //这里的if时候为了获取删除操作,如果没有次if会造成当达到字数限制后删除键也不能使用的后果.

        if (range.length == 1 && string.length == 0) {

            return YES;

        }else if (self.nameTextField.length >= 16) {

           self.nameTextField.text = [textField.text substringToIndex:16];

            return NO;

        }

    }

    return YES;

}

三,输入框只允许输入数字,字母和中文,其它的符号标点等不允许输入

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if(textField ==self.nameTextField){

        if([self isInputRuleAndNumber:string] || [string isEqualToString:@""]) {

            //当输入符合规则和退格键时允许改变输入框

            returnYES;

        }else{

            returnNO;

        }

    }else{

        returnYES;

    }

}

/**

 * 字母、数字、中文正则判断

 */

- (BOOL)isInputRuleAndNumber:(NSString *)str {

    NSString*other =@"➋➌➍➎➏➐➑➒";    //九宫格的输入值

    if ([other rangeOfString:str].location != NSNotFound) {

        returnYES;

    }

    NSString *pattern = @"[a-zA-Z\u4E00-\u9FA5\\u0030-\\u0039]+";

    NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", pattern];

    BOOLisMatch = [predevaluateWithObject:str];

    returnisMatch;

}

四,只能输入字母,数字,禁止输入特殊符号

#define ALPHANUM @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

  NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ALPHANUM] invertedSet];

  NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

  return [string isEqualToString:filtered];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容