簡體   English   中英

如何在可可中實現自己的彈出控件?

[英]How to implement my own pop-up control in Cocoa?

我想為我的NSWindow做一個自定義的自動完成控件,有點像Xcode的花哨的控件,但是我不知道怎么做。

我用自己的NSWindowController制作了一個NSPanel,並用一些代碼來顯示它:

_popupController = [[MYPopupWindowController alloc] initWithWindowNibName: @"MYPopupPanel"];
NSPanel *popup = [_popupController window];
[popup setFrameTopLeftPoint: ...];  // location of the cursor
[popup setLevel: NSPopUpMenuWindowLevel];
[_window addChildWindow: popup ordered: NSWindowAbove];
[_popupController showWindow: sender];

NSPanel本身具有實現-canBecomeKeyWindow (返回YES)的子類,因此彈出窗口中的NSTableView可以接收鍵事件。

效果很好。 我唯一遇到的問題是,當我的NSPanel是關鍵窗口時,主應用程序NSWindow沒有(很明顯)沒有,這導致紅色/黃色/綠色窗口控件變暗。 顯然,在Xcode之類的程序中,每次您開始輸入方法名稱時,窗口控件都不會變暗。

我在樹上叫錯了嗎? NSPanel是制作自定義彈出控件的錯誤方法嗎? 還是有某種方法可以使NSPanel成為關鍵窗口,而其父窗口(或其他窗口)不會使其窗口控件變暗?

編輯:有沒有辦法找出實際使用的Xcode,例如它是否是NSPanel?

嘗試將NSNonactivatingPanelMask標志添加到您的NSPanel樣式中(如果使用xib,只需在“屬性”檢查器中設置“非激活”復選框)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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