我有一个NSTextField,其绑定使用验证 - 如果值无效,则永远不会调用该集合;如果用户尝试使用无效值离开该字段,则应用程序会显示错误警报,其中包含2个选项(放弃或继续编辑),依此类推......
要获得更好的用户界面,我想在验证中更改文字颜色:
-(BOOL)validateMinValue:(id *)ioValue error:(NSError * __autoreleasing *)outError
{
ParameterValue * param=*ioValue;
if(*ioValue==nil || param.internalValue>_data->maxValue)
{
if (outError != NULL) {
NSString *errorString = @"Minimum value must be less than the maximum value.";
NSDictionary *userInfoDict = @{ NSLocalizedDescriptionKey : errorString };
*outError = [[NSError alloc] initWithDomain:@"minValue-maxValue"
code:1
userInfo:userInfoDict];
}
_minValueField.textColor=[NSColor redColor];
return NO;
}
_minValueField.textColor=[NSColor whiteColor];
return YES;
}
问题是,如果用户试图使用无效值离开该字段,并且他选择了" discard change"警报上的选项,该值被丢弃,但textcolor继续为红色(因为系统不会重新验证它知道的有效值)。 有什么建议吗?