需要一个NSTextField,其文本限制最多为4个字符,并且始终以大写形式显示,但无法找到实现该目标的好方法.我试图通过与验证方法的绑定来实现它,但只有在控件失去第一个响应者时才会调用验证,这并不好.
暂时我通过在文本字段上观察通知NSControlTextDidChangeNotification并让它调用方法来使其工作:
- (void)textDidChange:(NSNotification*)notification {
NSTextField* textField = [notification object];
NSString* value = [textField stringValue];
if ([value length] > 4) {
[textField setStringValue:[[value uppercaseString] substringWithRange:NSMakeRange(0, 4)]];
} else {
[textField setStringValue:[value uppercaseString]];
}
}
Run Code Online (Sandbox Code Playgroud)
但这肯定不是最好的方法.还有更好的建议吗?