1

我正在使用 NSTextFields 并启用/禁用选择和编辑,并且在示例应用程序中遇到了一些奇怪的行为。我有一个名为 MyTextField 的 NSTextField 子类;这个子类做的唯一一件事就是在被问到时拒绝第一响应者的状态,如:

@interface MyTextField : NSTextField
@end

@implementation MyTextField
- (BOOL)acceptsFirstResponder {
    return NO;
}
@end

但是,当我将此文本字段的实例放在 .xib 中,然后启动应用程序时,我仍然可以单击文本字段并开始编辑它。文本字段是否忽略 的返回值-acceptsFirstResponder

我已经尝试了几件事来解决/诊断这个问题:

  • 文本字段的类正确设置为 MyTextField 而不是 .xib 中的 NSTextField
  • 如果我NSLog在 之前放置一个语句return,它将按预期打印到控制台
  • 如果我返回NOfor -becomeFirstResponder,它会表现出相同的行为:我仍然可以编辑该字段
  • 如果我调用[myTextField setSelectable:NO]视图控制器,它会按预期工作:我不再能够单击该字段
    • 但是,如果我NO-isSelectableand -isEditable(没有显式调用-setSelectable:)返回,我仍然可以在(并编辑)该字段中选择文本

这里发生了什么?

4

1 回答 1

2

我不确定这一点,但我认为这与第一响应者实际上不是文本字段,而是字段编辑器这一事实有关,它是一个特殊的(不可见的)文本视图对象。查看 Apple 文档中“文本编辑编程指南”的“使用字段编辑器”部分以查看解释。

于 2012-08-27T21:05:16.180 回答