[英]Return focus to Editor after clicking a button in floating window of MAC
我在adobe flex中創建了一個虛擬鍵盤庫。
我已經為Windows創建了一個ANE來將鍵盤設置為始終在頂部並且不可聚焦。 使用:
int exstyle = GetWindowLong(hwnd3, GWL_EXSTYLE);
exstyle |= WS_EX_NOACTIVATE;
但現在我必須為mac創建一個ANE(OS 10.7)
我已經測試了一個示例mac應用程序(僅用於測試目的)
setLevel:NSFloatingWindowLevel
然而,當我點擊窗口的空白區域時,它沒有聚焦(光標停留在我的編輯器/ textarea中),但當我點擊它上面的任何按鈕時,該按鈕會聚焦。
如何訪問flex虛擬鍵盤並將其設置為Mac中的No-Activate模式
- - - - - - - - - - - - - - - 添加 - - - - - - - - - - -------------------------------------
我已經使用此代碼將我的Flex應用程序設置在所有Windows NSWindow的頂部
*myMainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
//[myMainWindow setLevel:NSFloatingWindowLevel];
[myMainWindow setLevel:NSMainMenuWindowLevel+1];
但我想停用該窗口,以便它不會聚焦。 像在Mac中的KeyboardViewer。 每次單擊該鍵(Flex鍵盤)時,KeyEvent都應重定向到當前的TextInput。
請幫我提一下你的建議。
你是說你在鍵盤應用程序中創建了一個試圖轉換窗口的ANE? 除非您可以將flex應用程序配置為將其主窗口創建為NSPanel而不是NSWindow,否則ANE似乎是要走的路。
您可以做的是創建一個與窗口大小相同的面板,然后將面板的內容視圖設置為窗口的內容視圖。 這會將所有窗口的內容移動到新創建的面板。 然后在主窗口上調用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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.