我正在使用 NSTextFields 并启用/禁用选择和编辑,并且在示例应用程序中遇到了一些奇怪的行为。我有一个名为 MyTextField 的 NSTextField 子类;这个子类做的唯一一件事就是在被问到时拒绝第一响应者的状态,如:
@interface MyTextField : NSTextField
@end
@implementation MyTextField
- (BOOL)acceptsFirstResponder {
return NO;
}
@end
但是,当我将此文本字段的实例放在 .xib 中,然后启动应用程序时,我仍然可以单击文本字段并开始编辑它。文本字段是否忽略 的返回值-acceptsFirstResponder
?
我已经尝试了几件事来解决/诊断这个问题:
- 文本字段的类正确设置为 MyTextField 而不是 .xib 中的 NSTextField
- 如果我
NSLog
在 之前放置一个语句return
,它将按预期打印到控制台 - 如果我返回
NO
for-becomeFirstResponder
,它会表现出相同的行为:我仍然可以编辑该字段 - 如果我调用
[myTextField setSelectable:NO]
视图控制器,它会按预期工作:我不再能够单击该字段- 但是,如果我
NO
从-isSelectable
and-isEditable
(没有显式调用-setSelectable:
)返回,我仍然可以在(并编辑)该字段中选择文本
- 但是,如果我
这里发生了什么?