禁止输入框输入emoji表情和空格
1.首先遵循UITextFieldDelegate
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
textField.delegate = self;
[self.view addSubview:textField];
2.使用键盘的代理方法对输入进行控制监听
-(BOOL)textField:(UITextField *)textField shouldChangeCharacterInRange:(NSRange)range replacementString:(NSString *)string{
if([[[textField textInputMode] primaryLanguage] isEqualToString:@"emoji"] || ![[textField textInputMode] primaryLanguage] ){
return NO; //这里是限制表情输入的
}
NSString *temp = [[string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] componentsJoinedByString:@""];//限制空格
if(![string isEqualToString:temp]){
return NO;
}else{
return YES;
}
return YES;
}
修改占位文字的颜色
1.通过attributedPlaceholder属性修改颜色。
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:
@"请输入占位文字" attributes:@{NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:textField.font }];
textField.attributedPlaceholder = attrString;
2.通过KVC修改颜色
[textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
3.通过重写UITextField的drawPlaceholderInRect:方法修改placeholder颜色
自定义一个TextField继承自UITextField ;重写drawPlaceholderInRect:方法 ;在drawPlaceholderInRect方法中设置placeholder的属性。
// 重写此方法
-(void)drawPlaceholderInRect:(CGRect)rect {
// 计算占位文字的 Size
CGSize placeholderSize = [self.placeholder sizeWithAttributes:
@{NSFontAttributeName : self.font}];
[self.placeholder drawInRect:CGRectMake(0, (rect.size.height - placeholderSize.height)/2, rect.size.width, rect.size.height)
withAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor],NSFontAttributeName : self.font}];
}
当我们使用纯代码创建UITextField时,用第二种方法(KVC)修改占位文字颜色是最便捷的 。
当我们使用XIB或者Storyboard创建UITextField时,通过自定义UITextField,修改占位文字颜色是最适合的。
我们也可以在第三种重写方法中,通过结合第二种方法中的KVC修改属性来实现。
OK,完成!
网友评论