2009-05-29 10 views
1

NSImageCell、NSTextFieldCells、およびNSPopUpButtonCellを使用してNSCellのカスタムサブクラスを作成しました。カスタムセル内のNSPopUpButtonCellがクリックされてもポップアップしない

私が使用してポップアップの細胞を初期化しています:私のアプリを実行中にポップアップセルをクリックしたときに

myPopUpCell = [[NSPopUpButtonCell alloc] init]; 
    [myPopUpCell setBordered:NO]; 
    [myPopUpCell setAutoenablesItems:NO]; 
    [myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]]; 

そしてdrawInteriorWithFrame:inView:

でそれを描くすべてが点を除いて、偉大な動作しているようですセルがポップアップしません。何が間違っているかもしれないかについての示唆?

+0

多分、切り取りと貼り付けのエラーですが、arrayWithObjectsリストはnilで終了する必要があります。例えば[myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@ "Item1"、@ "Item2"、@ "Item3"、nil]]; – Abizern

答えて

5

drawInteriorWithFrame:inView:にポップアップボタンのセルを描くことはまさにそれを行うつもりです。それを描くが、それ以外は何もない。クリックイベントの処理は描画とは関係ありません。そのため、カスタムセルでマウスイベントを解釈する必要があります。ポップアップボタンに使用しているフレームの内側にある場合は、それらを渡しますボタンのセルに移動します。まず、–trackMouse:inRect:ofView:untilMouseUp:のように、NSCellドキュメントに記載されているメソッドをサブクラス化して、マウスを追跡してください。ボタンのセルを正しく動作させるために必要なことを理解できるはずです。

実際に何をしているのかに応じて、自分でタイトル文字列を描く方が簡単で、NSMenuの+popUpContextMenu:withEvent:forView:を使用する方が簡単です。

関連する問題