私は 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
何が起きてる?