2011-07-28 42 views
1

我有一個大的列表 - 超過200個項目 - 由NSPopUpButton管理。點擊後,列表一直延伸到屏幕的頂部或底部並超出屏幕。如何限制NSPopUpButton的「彈出」大小?

如何限制開放尺寸,以便最多顯示20個左右的項目?

+0

你想表達什麼類型的內容?可能有更好的方法來做到這一點。 –

回答

4

200個項目對於彈出菜單來說太多了。 Mac人機界面指南recommend彈出菜單應該包含最多12個項目。

您需要重新考慮您的設計。我建議您不要使用彈出式菜單,而是創建一個不帶標題的單列NSTableView,並讓用戶從可滾動的選項列表中選擇一個項目。

+2

一個典型的StackOverflow答案:「你做錯了!」 :-) 麻煩的是我希望這個控件只佔用一行 - 如果我能讓NSTableView「彈出」,那將是可愛的。 – Mira

+2

如果您可以定位獅子,那麼您可以使用我想的彈出框。然而,我的觀點是,你*是*做錯了,你應該想另一種方式:-) –

4

我發現的解決方案是以下內容:

我子類NSPopUpButton,在我的子類定義confinementRectForMenu:onScreen:(所述NSMenuDelegate協議的一部分)。這限制了列表佔用的空間。不幸的是,你不能只指定一個尺寸,但必須完成確定位置的工作。你可以拿[self frame] origin,使用[[self superview] convertPointToBase:],微調一下,做任何其他的計算,然後用[[self window] convertBaseToScreen:]做最後的轉換。

+1

嗨,我陷入了同樣的問題,請你可以發表一些代碼.. –