簡體   English   中英

單擊MAC浮動窗口中的按鈕后,將焦點返回到編輯器

[英]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)

  1. 我必須從正在運行的flex應用程序訪問鍵盤(keywindow)
  2. 將它設置在頂部並且不可聚焦(即使我點擊鍵或從鍵盤的組合框中選擇鍵盤語言也不會聚焦)。 這樣光標將始終保留在編輯器中。

我已經測試了一個示例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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM