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