iOS禁止输入框输入emoji表情和空格,修改占位文字颜色

禁止输入框输入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,完成!

你可能感兴趣的:(iOS禁止输入框输入emoji表情和空格,修改占位文字颜色)