【问题标题】:Cocoa: NSTextField and Fullscreen-Mode with enterFullScreenMode:Cocoa:NSTextField 和带有 enterFullScreenMode 的全屏模式:
【发布时间】:2011-07-30 04:00:17
【问题描述】:

目前我正在尝试使用 NSWindow 的 enterFullScreenMode: 选项来制作窗口内容的子视图查看新的全屏视图,效果很好。但是,我的视图包含一个行为怪异的 NSTextField。当我切换到全屏模式时,它变为非活动状态(似乎放弃了 firstResponder 状态)。我可以通过单击它并调用它来很好地使用它

[myField becomeFirstResponder];

文档不鼓励这样做。他们说我应该经常打电话

[myWindow makeFirstResponder: myField];

在全屏模式后不再起作用。然而,最奇怪的是,当在字段中输入内容然后退出时,输入的文本会消失。当足够快地切换回全屏模式时,它甚至可能会再次回来。知道我做错了什么吗?或者关于如何使 NSTextField 在全屏模式下退出 firstResponder 状态而不使用不鼓励的 API 调用的任何反馈?

提前致谢, 尼古拉斯

【问题讨论】:

  • 好了,抓紧你的马。我刚刚发现(希望这对某人有所帮助)。当将视图置于全屏模式时,Cocoa 会为其分配两个 _NSFullScreenWindow 类的新窗口。所以你仍然可以打电话给[[myField window] makeFirstResponder:myField]...也许我现在也会破解这个奇怪的行为。如果有,我会回复。

标签: objective-c cocoa fullscreen nstextfield first-responder


【解决方案1】:

你的意思是 10.6 对吗?

[myWindow makeFirstResponder: myField];

enterFullScreenMode 会为视图创建一个新窗口,所以myWindow 实际上是进入全屏之前的窗口。

你应该使用

[[self window] makeFirstResponder: myField];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多