一意である必要があるテキストフィールドがあるため、カスタムを追加しましたNSFormatter
(以下を参照)
スクリーンショットでわかるように、フォーマッタは機能しますが、私が使用している連続バインディングが壊れているため、たとえば、バインドされたテキストがリアルタイムで更新されなくなりました。
ここで考えられる原因を見つけましたが、この問題を回避して継続バインディングを再度有効にする方法がわかりません。
...
- 12.ビューに NSFormatter が関連付けられている場合、値は NSFormatter インスタンスによってフォーマットされます。手順 17 に進みます。
- ...
- 17.更新された値がユーザー インターフェイスに表示されます。
そのため、必要な手順を意図的にスキップしているように見えます。これは非常に迷惑です。NSValueTransformer を試しましたが、それを編集可能な NSTextField に追加すると、編集できなくなります。
私のフォーマッター
- (BOOL)getObjectValue:(out id *)obj forString:(NSString *)string errorDescription:(out NSString **)error {
if([string isNotEqualTo:@"todo-invalid-value"]){
*obj = string;
NSLog(@"YES");
return YES;
} else {
if(error){
*error = @"ERROR: not allowed";
}
return NO;
}
}
- (NSString *)stringForObjectValue:(id)obj {
return (NSString *)obj;
}
動作確認
リスト アイテムのタイトルは、テキスト フィールドに入力したテキストで更新される必要があることに注意してください。