隐藏标题栏时子视图被禁用
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,将包含示例代码,有助于解释该过程。
【讨论】:
以上是关于隐藏标题栏时子视图被禁用的主要内容,如果未能解决你的问题,请参考以下文章
iOS导航栏在滚动时被隐藏(也是一种滚动),无论它在滚动视图之外
UINavigationBar 的高度错误,因为加载时状态栏被隐藏