私は NSTextFields を使用して、選択と編集を有効/無効にしていますが、サンプル アプリで奇妙な動作に遭遇しました。MyTextField という NSTextField のサブクラスがあります。このサブクラスが行う唯一のことは、次のように、要求されたときにファーストレスポンダーのステータスを拒否することです。
@interface MyTextField : NSTextField
@end
@implementation MyTextField
- (BOOL)acceptsFirstResponder {
return NO;
}
@end
ただし、このテキスト フィールドのインスタンスを .xib に配置してアプリを起動すると、テキスト フィールドをクリックして編集を開始できます。テキスト フィールドは の戻り値を無視しています-acceptsFirstResponderか?
これを回避/診断するためにいくつかのことを試しました:
- テキスト フィールドのクラスは、.xib の NSTextField ではなく MyTextField に適切に設定されます。
NSLogの前にステートメントを配置するとreturn、期待どおりにコンソールに出力されます- に戻る
NOと-becomeFirstResponder、同じ動作を示します。フィールドを編集できます - ビューコントローラーを呼び出す
[myTextField setSelectable:NO]と、期待どおりに機能します。フィールドをクリックできなくなりました- ただし、 (明示的に呼び出さずに) and
NOから戻った場合でも、フィールド内のテキストを選択 (および編集) できます。-isSelectable-isEditable-setSelectable:
- ただし、 (明示的に呼び出さずに) and
何が起きてる?