ios - 有没有办法在您输入时更改文本字段内文本的颜色?

标签 ios objective-c uitextfield

如果文本字段的文本长度小于 4,我希望更改字体的颜色。但我只希望它在我完成输入后显示(离开文本字段)。
我有这个

if ([_username.text length] < 4){
    _username.textColor = [UIColor redColor];
}
else{
    _username.textColor = [UIColor blackColor];
}
但我不知道我必须“把它放在里面”( Objective-C 的新手 - 不懂行话)。
我已经尝试过了,但它不能正常工作,因为当您返回文本字段时,字体保持红色。我想要它,这样当你打字时它总是黑色的。而且它只有在你按下返回(下一步)键时才会变成红色。
- (BOOL)textFieldShouldReturn:(UITextField *)textField 

另外为什么这不起作用?
if (textField == _confirm) {
        int resultantLength = textField.text.length + string.length - range.length;
        
        NSLog(@"Length After Additions And Subtractions Will Be: %i letters", resultantLength);
        
        if (![_confirm.text isEqualToString:_password.text]) {
            textField.textColor = [UIColor redColor];
            [_next setEnabled:NO];

        }else{
            [_next setEnabled:YES];
        }
    }

最佳答案

如果您想等到用户完成添加以下内容:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if (textField.text.length < 4){
        textField.textColor = [UIColor redColor];
    }
    else{
        textField.textColor = [UIColor blackColor];
    }
}

如果您想实时进行:
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    int resultantLength = textField.text.length + string.length - range.length;

    NSLog(@"Length After Additions And Subtractions Will Be: %i letters", resultantLength);

    if (resultantLength < 4){
        textField.textColor = [UIColor redColor];
    }
    else{
        textField.textColor = [UIColor blackColor];
    }

    return YES;
}

请注意,这将影响使用相同委托(delegate)的任何 textField。如果您只想响应特定的文本字段,例如 _username , 做这个:
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if (textField == _username) {
        int resultantLength = textField.text.length + string.length - range.length;

        NSLog(@"Length After Additions And Subtractions Will Be: %i letters", resultantLength);

        if (resultantLength < 4){
            textField.textColor = [UIColor redColor];
        }
        else{
            textField.textColor = [UIColor blackColor];
        }
    }
    return YES;
}

确保您的 ViewController 设置为 UITextFieldDelegate 协议(protocol),并且它是您的 textField 的委托(delegate)

关于ios - 有没有办法在您输入时更改文本字段内文本的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947372/

相关文章:

objective-c - 在 obj-c 应用程序中将 appengine blob 用于二进制数据

ios - 如何改变 UITextField 的形状?

ios - Swift 4 UITableView 使一个单元格成为 UITextView

ios - 应用程序试图在目标上推送一个 nil View Controller

ios - 我可以从 CloudKit 接收与 CKQuery 对应的记录数吗?

ios - MKAnnotationView pin.image 显示的图像不正确

ios - 出现键盘时快速移动 View

ios - dispatch_Async 串行队列

ios - 通过 UIToolBar 的 UIBarButtonItem 在 iOS13 上不显示

objective-c - 在 iPad UITextField 输入期间更改键盘类型?