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

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

作者: jimmywife | 来源:发表于2019-04-12 16:27 被阅读0次
    禁止输入框输入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表情和空格,修改占位文字颜色

          本文链接:https://www.haomeiwen.com/subject/lqgcwqtx.html