私はnsviewを持っていて、drawrectを使用して背景の画像を描画しています。また、3つのサブビューnsbuttonがあります。問題は、マウスがボタンの上にあるときはいつでも、他のボタンが消えることです。しかし、draw rectメソッドを削除すると、これは発生しません。ですから、これは画像を描くための長方形の描画方法に関係していると思います。
どうすればこれを回避できますか?ありがとう。
編集:わかりました、私は問題がどこにあるかを理解しました。基本的に、私はNSMenuItemを持っており、その中に3つのボタンでビューを配置しています。しかし、NSMenuの上部には、4ピクセルのパディングがあります。したがって、基本的に、そのパディングを削除するために、ここで提供されるソリューションを使用しました: NSMenuItemカスタムビューの上のギャップ
ソリューションから、drawRectメソッドに線があります。
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
その瞬間、この行を削除すると、ボタンが正しく動作します。しかし、その後、上部のパディングは消えません。
これが私のdrawRectです:
- (void) drawRect:(NSRect)dirtyRect {
[[NSGraphicsContext currentContext] saveGraphicsState];
NSRect fullBounds = [self bounds];
fullBounds.size.height += 4;
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
NSImage *background = [NSImage imageNamed:@"bg.png"];
[background drawInRect:fullBounds fromRect:NSZeroRect operation:NSCompositeCopy fraction:100.0];
[[NSGraphicsContext currentContext] restoreGraphicsState];
}