我正在使用NSTextFields并启用/禁用选择和编辑,我在示例应用程序中遇到了一些奇怪的行为。我有一个名为MyTextField的NSTextField子类;这个子类唯一能做的就是在被要求时拒绝第一响应者状态,如:
@interface MyTextField : NSTextField
@end
@implementation MyTextField
- (BOOL)acceptsFirstResponder {
return NO;
}
@end
但是,当我将此文本字段的实例放在.xib中,然后启动应用程序时,我仍然可以单击文本字段并开始编辑它。文本字段是否忽略-acceptsFirstResponder
的返回值?
我尝试了几件事来解决这个问题:
NSLog
之前放置return
声明,则会按预期打印到控制台NO
返回-becomeFirstResponder
,则表现出相同的行为:我仍然可以编辑该字段[myTextField setSelectable:NO]
,它可以正常工作:我无法再点击该字段
NO
和-isSelectable
(未明确调用-isEditable
)返回-setSelectable:
,我仍然可以在字段中选择文字(并编辑)这里发生了什么?
答案 0 :(得分:2)
我不确定这一点,但我认为这与第一个响应者实际上不是文本字段,而是字段编辑器这是一个特殊的(不可见的)文本视图对象这一事实有关。请查看Apple文档中“文本编辑编程指南”的“使用字段编辑器”部分,以查看解释。