gpt4 book ai didi

cocoa - 为什么设置initialFirstResponder没有效果?

转载 作者:行者123 更新时间:2023-12-03 16:07:34 26 4
gpt4 key购买 nike

我有一个带有 3 个文本字段的简单表单 (NSWindow)。 NSWindow 的 initialFirstResponder “指向”第一个字段 (NSTextField)。所有三个文本字段都通过 nextKeyView 相互循环链接。

我遇到的问题是,当我从 Xcode 启动应用程序时,它将聚焦于应用程序关闭时最后一次事件(焦点)的文本字段。

例如,如果我将文本字段命名为 A、B 和 C,并且 initialFirstResponder 设置为 A。现在,如果我启动应用程序,则将焦点放在 B 上,然后关闭应用程序,下次我启动它,焦点将在B上。

这是为什么?我该如何解决这个问题?

(抱歉,如果这是一个微不足道的问题,这是我在 cocoa 中的第一步......)

编辑:

这是在 OS X Lion 10.7.1、Xcode 4.1 上。

编辑2:

我找到了一种方法来“修复”这个问题...在主窗口(或任何与此相关的窗口)XIB/NIB 文件中,单击“属性检查器”,然后取消选中“可恢复”框。现在,应用程序将不会存储最后的位置,因此 initialFirstResponder 看到的内容将受到尊重并相应地遵循。

最佳答案

欢迎来到 cocoa ! :) 我怀疑这是新的 user interface preservation 的一部分。 OS X Lion 中的功能。 (事实上​​,我刚刚创建了一个带有 3 个文本字段的简单应用程序,我也看到了这种行为。)因为 windows automatically restore themselves ,即使您没有实现,您也会看到很多这种行为自动发生。这可能是可取的 - 大多数应用程序都会以这种方式工作,并且用户会期望它。

但是,如果您确实想要禁用它,您可以通过子类化 NSWindow 或 NSTextField 并覆盖 -encodeRestorableStateWithCoder: 来实现。 。但是,我绝对建议您保留默认行为。

<小时/>

编辑更多信息:应用程序状态似乎存储在 ~/Library/Saved Application State/com.yourapp.savedState 中。在那里您可以看到一个包含有关窗口信息的 plist 文件。其他文件看起来不太容易阅读,但它们可能包含有关哪个字段是第一响应者等的信息。

关于cocoa - 为什么设置initialFirstResponder没有效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157853/

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