如果文本字段的文本长度小于 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/