1

NSImageCell、いくつかのNSTextFieldCells、およびNSPopUpButtonCellを使用してNSCellのカスタムサブクラスを作成しました。

次を使用してポップアップセルを初期化しています。

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

そしてそれを描くdrawInteriorWithFrame:inView:

アプリの実行中にポップアップセルをクリックしてもセルがポップアップしないことを除いて、すべてがうまく機能しているようです。何が間違っているのかについての提案はありますか?

4

1 に答える 1

5

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

何をしているのかによっては、実際には自分でタイトル文字列を描画する方が簡単で、NSMenuを使用する方が簡単な場合があります+popUpContextMenu:withEvent:forView:

于 2009-05-29T22:22:01.280 に答える