最大4文字のテキスト制限を持つNSTextFieldが必要であり、常に大文字で表示されますが、それを実現するための良い方法を理解することはできません。検証メソッドを使用したバインディングを介してそれを実行しようとしましたが、コントロールがファーストレスポンダーを失った場合にのみ検証が呼び出され、それは良くありません。
一時的に、テキストフィールドの通知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]];
}
}
しかし、これは確かにそれを行うための最良の方法ではありません。より良い提案はありますか?