我在MainMenu.xib中有一个NSText字段,并且设置了一个操作来验证它是否适用于电子邮件地址。我希望NSTexFields边框颜色(蓝色发光)在我的动作返回NO时显示为红色,并在动作返回YES时显示为绿色。这里是动作:更改NSTextField的边框“发光”颜色
-(BOOL) validEmail:(NSString*) emailString {
NSString *regExPattern = @"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}$";
NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
NSLog(@"%ld", regExMatches);
if (regExMatches == 0) {
return NO;
} else
return YES;
}
我调用此函数而现在设置文本的颜色,但我想设置的NSTextField的发光颜色来代替。
- (void) controlTextDidChange:(NSNotification *)obj{
if ([obj object] == emailS) {
if ([self validEmail:[[obj object] stringValue]]) {
[[obj object] setTextColor:[NSColor colorWithSRGBRed:0 green:.59 blue:0 alpha:1.0]];
[reviewButton setEnabled:YES];
} else {
[[obj object] setTextColor:[NSColor colorWithSRGBRed:.59 green:0 blue:0 alpha:1.0]];
[reviewButton setEnabled:NO];
}
}
}
我打开子类NSTextField,但最干净的方式来做到这一点将不胜感激!
你有没有想出解决办法?我正在寻找同样的事情。我不知道在Cocoa中是否有标准的方式来表明一个无效的字段。 –