3

NSButton と NSButtonCell をサブクラス化し、図面を変更しました。これで、ボタンにフォーカス リングが表示されなくなりました。カスタム ボタンにカスタム カラーでフォーカス リングを描画する方法を探しています。

質問が更新されました

4

2 に答える 2

1

フォーカス リングを自分で描画する方法はわかりませんが (カスタム カラーを実行します)、カスタム ボタン セルにフォーカス リングを描画させるには、通常、次のようにfocusRingMaskBoundsForFrame:inView:をオーバーライドするだけで済みます。

- (NSRect)focusRingMaskBoundsForFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    return cellFrame;
}

それでも希望どおりの結果が得られない場合は、drawFocusRingMaskWithFrame:inView:を実装してマスクを追加で提供する必要がある場合があります。この方法では、基本的にフォーカス リングを追加する必要があるものを描画するだけです。Cocoa が残りの作業を行います。

これらの方法は Mac OS X 10.7 Lion 以降でのみ機能することに注意してください。ただし、これは Apple が現在行うべきだと言っている方法です。

于 2012-12-03T13:34:41.133 に答える
-2

カスタム ボタン クラスにトラッキング エリアを追加すると、ボタン フォーカスをカスタマイズできます。

-(void)awakeFromNib{
int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:self.frame options:opts owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
}

これで、次の機能でカスタマイズを行うことができます。

- (void) mouseEntered:(NSEvent*)event{
        //Add Custom Focus Ring
}

- (void) mouseExited:(NSEvent*)event{
        //Remove Custom Focus Ring
}
于 2012-10-09T14:34:42.500 に答える