gpt4 book ai didi

cocoa - NSTextField 子类不尊重 -acceptsFirstResponder?

转载 作者:行者123 更新时间:2023-12-03 17:04:51 25 4
gpt4 key购买 nike

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

@interface MyTextField : NSTextField
@end

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

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

我尝试了一些方法来解决/诊断这个问题:

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

这是怎么回事?

最佳答案

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

关于cocoa - NSTextField 子类不尊重 -acceptsFirstResponder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com