編集可能なフィールドの1つの列を持つNSTableViewがあります。セルの編集はうまくいき、デリゲートのルーチンが更新を取得し、必要に応じてそれらを処理することができます。問題は、タイマーまたは非同期(ソケット)入力に基づいてテーブルの値を更新する他のコードがあることです。編集中に更新イベントが発生すると、更新プログラムはユーザー入力を上書きします。編集中にNSTableViewへの更新を防止する
私は、インスタンス変数のロックと更新をブロックするデリゲートメソッドを使用しようとしている:
- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor;
{
tableEditInProgress = YES;
return YES;
}
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
tableEditInProgress = NO;
return YES;
}
- (void)controlTextDidBeginEditing:(NSNotification *)aNotification
{
tableEditInProgress = YES;
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
tableEditInProgress = NO;
}
これが唯一の更新が発生する前にユーザーならば、フィールドでの実際の型の新しいテキストを動作するようです。ユーザーがフィールド内の編集カーソルを取得するとすぐに更新をブロックしたい(フィールドの内容をダブルクリックする)。
おそらく間違ったデリゲートメソッドを使用しています。
TIA
ジョー
、代わりに '場合(tableEditInProgress)リターンの;'、 'ない場合([sensorTable currentEditor] = nilを!)\tリターン;'代わりに? – Flyingdiver
それはそれをやっているようでした、ありがとう! – Flyingdiver
ええ、そうです。それは本当にうまくいくはずです。 – Enchilada