objective-c - 单击 MAC float 窗口中的按钮后将焦点返回到编辑器

标签 objective-c macos cocoa apache-flex actionscript

我在 adobe flex 中创建了一个虚拟键盘库。

我已经为 Windows 创建了一个 ANE,以将键盘设置为始终位于顶部且不可聚焦。使用:

int exstyle = GetWindowLong(hwnd3, GWL_EXSTYLE);
exstyle |= WS_EX_NOACTIVATE; 

但现在我必须为 mac (OS 10.7) 创建一个 ANE

  1. 我必须从正在运行的 Flex 应用程序访问键盘(keywindow)
  2. 将其始终设置在顶部且不可聚焦(即使我单击按键或从键盘的组合框中选择键盘语言,它也不会获得焦点)。使光标始终停留在编辑器中。
<小时/>

我已经使用测试了示例 mac 应用程序(仅用于测试目的)

setLevel:NSFloatingWindowLevel 

但是,当我单击窗口的空白区域时,它不会获得焦点(光标停留在我的编辑器/文本区域中),但是当我单击其上的任何按钮时,该按钮就会获得焦点。

How to access the flex virtual keyboard and set it to No-Activate mode in Mac

------------------------------------------已添加---------------- ----------------------------------------------------

我已经使用此代码将我的 Flex 应用程序设置在所有窗口 NSWindow 的顶部

*myMainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
//[myMainWindow setLevel:NSFloatingWindowLevel]; 
[myMainWindow setLevel:NSMainMenuWindowLevel+1]; 

但我想停用该窗口,这样它就不会获得焦点。就像 Mac 中的 KeyboardViewer 一样。每次点击按键(Flex 键盘)时,KeyEvent 都应该重定向到当前的 TextInput。

请帮助我提出您的建议。

最佳答案

您是说您在键盘应用程序中创建了一个试图转换窗口的 ANE 吗? ANE 似乎是可行的方法,除非您可以配置 Flex 应用程序以将其主窗口创建为 NSPanel 而不是 NSWindow。

您可以做的是创建一个与窗口大小相同的面板,然后将面板的内容 View 设置为窗口的内容 View 。这会将窗口的所有内容移动到新创建的面板中。然后在主窗口上调用 orderOut 并在面板上调用 makeKeyAndOrderFront 。这是我们在 Connect 中的类似代码:

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];

关于objective-c - 单击 MAC float 窗口中的按钮后将焦点返回到编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902219/

相关文章:

objective-c - Objective-c中如何设计一个经常访问的类

ios - 如何以编程方式交换两个按钮的约束?

xcode - 使无边框窗口具有更暗更大的阴影

ios - 在 iOS 上学习编码——swift 与 Objective C 的困境

objective-c - 苹果操作系统 X : How to force a Field Editor to scroll instead of wrap text?

objective-c - 查找与特定字符串匹配的 NSString NSArray 的索引?

xcode - NSTabView 之间传递值

c++ - 在 Mac 上运行 CDT Eclipse 时出错

iPhone 开发 : What kind of data structures are available?

objective-c - 确定缓冲区何时已播放,无需轮询 OpenAL 中的源