NSPopUpButton で管理されている 200 を超えるアイテムを含む大きなリストがあります。クリックすると、リストが画面の上部または下部まで拡張されます。
最大で 20 個ほどのアイテムが一度に表示されるように、開くサイズを制限するにはどうすればよいですか?
NSPopUpButton で管理されている 200 を超えるアイテムを含む大きなリストがあります。クリックすると、リストが画面の上部または下部まで拡張されます。
最大で 20 個ほどのアイテムが一度に表示されるように、開くサイズを制限するにはどうすればよいですか?
私が見つけた解決策は次のとおりです。
NSPopUpButton をサブクラス化し、サブクラスで定義しましconfinementRectForMenu:onScreen:
た ( NSMenuDelegateプロトコルの一部)。これにより、リストが占めるスペースが制限されます。残念ながら、サイズを指定するだけではなく、位置を決定する作業を行う必要があります。を取り[self frame] origin
、使用[[self superview] convertPointToBase:]
し、少しずつ動かして、他の計算を行ってから、 で最終的な変換を行うことができ[[self window] convertBaseToScreen:]
ます。
200 項目はポップアップ メニューには多すぎます。Mac Human Interface Guidelinesでは、ポップアップ メニューに最大 12 項目を含めることを推奨しています。
設計を再考する必要があります。ポップアップ メニューの代わりに、NSTableView
ヘッダーのない 1 つの列を作成し、ユーザーがスクロール可能なオプション リストから項目を選択できるようにすることをお勧めします。