隐藏标题栏时,子视图将被禁用

时间:2013-07-22 03:43:21

标签: macos cocoa

使用OSX 10.8 SDK在XCode for OSX中编写应用程序。我的所有Windows工作正常,直到我使用Interface Building来删除nib中的标题栏(我取消选中window元素的Attributes Inspector上的Title Bar param)。窗口仍然显示,但所有子视图都被禁用。我再也无法输入文字和处理栏都是灰色的。

有谁知道为什么会这样?以及如何使用没有标题栏的窗口,但启用了所有子视图?

以下是标题栏的视图: enter image description here

以下是没有的情况: enter image description here

如你所见,一切都被禁用了。


更新

有人询问有关显示窗口的代码。对于这个例子,我没有使用任何代码。对于上面的两个屏幕,这里是我遵循的步骤:

  1. 使用XCode创建了一个新的cocoa应用程序。 (自动创建一个xib)。
  2. 将两个控件(文本字段和进度条)拖出到现有窗口中。
  3. Ran,并拍了一个屏幕截图
  4. 关闭并勾选窗口的Title Bar属性。
  5. 重新启动了应用。拍了第二张截图。

1 个答案:

答案 0 :(得分:11)

在这个链接上有这个问题的答案:

Xcode 4, Cocoa Title bar removing from interface builders disables textView from editing

如果您阅读NSWindow的文档,您可以看到方法canBecomeKeyWindow和canBecomeMainWindow如果没有标题栏则返回NO。对NSWindow进行细分并超越这些方法将使它们成为关键窗口。

如果您已经安装了文档,那么有关于如何在Apple的文档网站中对这些窗口进行子类化的示例代码,或者在xcode中有示例代码。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindow/canBecomeKeyWindow

在上面的链接中搜索canBecomeKeyWindow,将会包含示例代码,以帮助解释该过程。