3

カスタムNSViewサブクラスを使用して一部のコンテンツを描画する必要がありますが、ユーザーがホバーしたときにハイライト表示されずNSMenu、ユーザーがクリックしても閉じません。何か案は?

編集

を使用する-drawRect:[[self enclosingMenuItem] isHighlighted]、ビューを強調表示して描画する必要があるかどうかを判断でき、そうする機会が与えられます。私が理解しなければならないのは、それを行う方法だけです。

4

3 に答える 3

5

多分あなたはこの方法でそれを試してみるべきです:

#define menuItem ([self enclosingMenuItem])

- (void) drawRect: (NSRect) rect {
    BOOL isHighlighted = [menuItem isHighlighted];
    if (isHighlighted) {
        [[NSColor selectedMenuItemColor] set];
        [NSBezierPath fillRect:rect];
    } else {
        [super drawRect: rect];
    }
}
于 2010-05-29T22:48:55.590 に答える
1

あなたの質問を理解したかどうかわかりません。次のことを意味していると思います: メニューが開き、すべての描画が描画を停止しました。これは、開かれた NSMenu が UI の NSRunLoop スレッドを停止するためだと思います。両方のうちの1つ。他のスレッドでスレッドセーフな描画を行うようにしてください。

于 2010-05-27T04:59:57.400 に答える