一. 占位符颜色字体修改
_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];
}