首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSWindow转换为NSPanel

将NSWindow转换为NSPanel
EN

Stack Overflow用户
提问于 2014-01-24 07:34:25
回答 2查看 1.3K关注 0票数 2

我正在访问虚拟键盘(外部应用程序-在Adobe中)。我想那个键盘应该是不可聚焦的。所以我必须申请

代码语言:javascript
复制
styleMask:NSNonactivatingPanelMask 

但我正在访问键盘

代码语言:javascript
复制
NSWindow *myMainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];

因为NSNonactivatingPanelMask只能应用于NSPanel

如果我可以将NSWindow类型转换为NSPanel (?)那就有可能。

--我之前的问题

Return focus to Editor after clicking a button in floating window of MAC

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-17 06:57:07

由@ashirbad提供

代码语言:javascript
复制
NSWindow *mainWindow = [[NSApp windows] objectAtIndex: 0];
NSView *mainContentView = [mainWindow contentView];

NSPanel *mainPanel = [[NSPanel alloc] initWithContentRect:[mainContentView frame]
             styleMask:NSBorderlessWindowMask | NSNonactivatingPanelMask
            backing:NSBackingStoreBuffered defer:YES];

[mainPanel setContentView:mainContentView];
[mainPanel setLevel:NSScreenSaverWindowLevel];

[mainPanel makeKeyAndOrderFront:nil];
[mainContentView orderOut:nil]; //error

这解决了我的问题。但是我得到了一个错误,orderOut没有在NSView中定义。

如果顶部的应用程序是Mac应用程序,那么它是可以的,但如果它是一个flex应用程序(在本例中)。在这一行没有响应的应用程序。

代码语言:javascript
复制
[mainPanel setContentView:mainContentView];
票数 2
EN

Stack Overflow用户

发布于 2014-01-25 08:57:36

NSPanel是一个NSWindow,相反不是真的--继承不是双向工作的!

此外,将对象引用从一种类型转换到另一种类型并不会改变引用对象的实际类型,因此即使您将一个A *强制转换为一个B *,然后调用一个方法,您也会得到与没有转换的方法完全相同的方法--该转换用于通知编译器,您知道引用的实际对象是不同的类型,因此在调用B方法时会使编译器安静下来。

即使你能克服所有这些,你也希望键盘是非聚焦的,这与非激活不一样前者是一个应用程序的主窗口,后者是关于在不激活应用程序的情况下接受输入。

应用程序的主窗口是焦点窗口,其框架以某种方式突出显示,应用程序的关键窗口是接受用户输入的窗口。他们往往是同一个窗口,但不必是。这听起来像是你希望你的键盘通过键窗口而不是主窗口--也就是说,表现得像一个面板。

NSWindowcanBecomeMainWindowcanBecomeKeyWindow方法,它们分别决定窗口是否可以成为主窗口或键。虽然不能更改NSWindow实例的返回内容,但您可以子类NSWindow并重写这些方法--这就是NSPanel所做的--请参阅这些方法的NSWindow文档。因此,如果您将KeyboardWindow定义为一个NSWindow子类,并重写canBecomeMainWindow以返回NO。这样做,您就有一个窗口将不会成为主(焦点),但可以接受输入。

HTH

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21326958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档