4

カスタムツールバーとして機能する単純な長方形のNSviewにいくつかのボタンを配置しています。最初のレンダリングでは、ボタン/ビューは期待どおりに表示されますが、ボタンが押されるたびに(場合によっては、マウスをまったく操作せずに)、アーティファクトが表示され始めます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

すべてのアクションメソッドとフォーカスメソッドで[self.toolbarViewsetNeedsDisplay:YES]を呼び出すことでアーティファクトを排除できますが、これはハックのようです。これに対処するためのクリーンな方法はありますか?

4

2 に答える 2

1

それは初心者の問題でした。drawRectメソッドで

- (void)drawRect:(NSRect)dirtyRect

ビューの境界であると仮定して、ビューのアウトラインを描画するためにパラメータを使用してdirtyRectいました。実際には、ボタンを押したときに汚れたのはボタンの周囲の領域だけでした。「アーティファクト」は、実際には私のアウトラインが間違った場所に描かれていました。

ビューの境界を正しく使用する

NSRect drawingRect = [self bounds];

「アーティファクト」は表示されなくなりました。

于 2012-09-30T21:08:21.673 に答える
0

IBでボタンのフォーカスリングを「なし」に設定しようとしています。

于 2012-09-26T09:52:38.830 に答える