狮子错误地保留了焦点

时间:2012-03-20 08:01:31

标签: xcode macos cocoa xcode4 osx-lion

我真的很感激这个问题的答案,但却无法承受赏金(!)。

这里我们有一个非常简单的GUI:用户只需在两个文本框中输入源词和目标词,然后按一个按钮。然后发生了很多呼呼声,半秒钟之后会出现一个答案。用户继续这样做直到无聊,然后关闭应用程序。当然,当应用程序重新启动时,焦点应该放在源上,我希望有一种更简洁的方法来实现这个,而不是描述的那个。下面的评论者证实了我的感觉,这个问题是Lion持久性的一个人工制品,在这样的简单案例中这是一个真正的麻烦。

我在一个简单的'controller'类的awakeFromNib方法中,在Xcode 4.3中的一个简单的Cocoa应用程序中,在Lion下运行,将NSTextField设置为First Responder(使用窗口的makeFirstResponder)。

makeFirstResponder在重新启动后第一次加载应用程序时工作正常,但每次重新运行时,焦点都会设置为访问的最后一个字段。 (我曾尝试将窗口的initialFirstResponder插座连接到所需的NSTextField,但遇到了同样的问题)。

我最后通过从NSApplication委托调用初始化函数并在那里调用makeFirstResponder来修复它。

修复有点乱 - 我向控制器添加了一个全局变量,并在awakeFromNib中将其初始化为self。

我添加了应用程序的Cocoa部分很简单的信息,但其中很大一部分是从Windows移植的.cpp文件中的大量STL内容。

1 个答案:

答案 0 :(得分:1)

在IB的窗口的属性检查器中取消选中“可还原”复选框。当然,你不会有一个可恢复窗口的其他行为,比如记住它的位置和大小。