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

Posted

技术标签:

【中文标题】隐藏标题栏时子视图被禁用【英文标题】:Subviews become disabled when title bar is hidden 【发布时间】:2013-07-22 03:43:21 【问题描述】:

使用 OSX 10.8 SDK 在 XCode for OSX 中编写应用程序。我所有的 Windows 工作正常,直到我使用 Interface Building 摆脱了笔尖中的标题栏(我取消选中窗口元素的属性检查器上的 Title Bar 参数)。窗口仍然显示,但所有子视图都被禁用。我无法再输入文本,进程栏全部变灰。

有人知道为什么会这样吗?以及如何拥有一个没有标题栏但启用所有子视图的窗口?

这是我的标题栏视图:

这就是没有它的样子:

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


更新

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

    使用 XCode 创建了一个新的 cocoa 应用程序。 (自动创建 xib)。 将两个控件(文本字段和进度条)拖到现有窗口中。 跑来截屏 关闭并检查窗口的Title Bar 属性。 重新启动应用程序。拍摄了第二张屏幕截图。

【问题讨论】:

你是如何“摆脱他们窗口中的标题栏”的? 界面生成器。我正在取消选中 NSWindow 对象的属性检查器上的 Title Bar 检查。 请显示您用来显示窗口的代码。 刚刚使用了带有新可可应用程序的界面构建器。有关详细信息,请参阅更新。 【参考方案1】:

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

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

如果您阅读了 NSWindow 的文档,您会看到方法 canBecomeKeyWindow 和 canBecomeMainWindow 如果没有标题栏则返回 NO。子类化 NSWindow 并覆盖这些方法将使它们成为关键窗口。

在苹果的文档网站或 xcode(如果您已安装文档)中有关于如何对这些窗口进行子类化的示例代码。

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

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

【讨论】:

以上是关于隐藏标题栏时子视图被禁用的主要内容,如果未能解决你的问题,请参考以下文章

当标签栏点击两次时禁用自动弹出到根视图控制器

如何禁用背后视图点击事件Framelayout

iOS导航栏在滚动时被隐藏(也是一种滚动),无论它在滚动视图之外

UINavigationBar 的高度错误,因为加载时状态栏被隐藏

MFMailComposeViewController 导航栏按钮被禁用

隐藏在标签栏控制器标签栏旁边的 iPhone 视图