2011-06-18 4 views
5

ボタンを無効に設定すると、テキストは灰色になります(以前は黒でした)。 私のウィンドウでは、ボタンが無効になっているとテキストが読み込めないという結果になります。ボタンを無効にするとテキストが灰色にならないようにする方法はありますか?

私はNSButton/NSButtonCell/NSCell/NSControlのドキュメントですべてを見ましたが、テキストを黒く保つ方法はありませんでした。私はそれをどのようにすることができるか知っていますか?

+0

falseの場合は、むしろそれを無効にするよりも、ボタンのプロパティをオーバーライドすることができます動作します - おそらく相互作用を無効にします、またはあなたのテキストの色を保持するようにボタンの色/境界線を変更するだけですか?あなたがこの修正を試したのかどうか疑問に思うだけで、私はあなたが何を言っているのか知っています。 – Luke

+0

mmmm ..私は画像/代替画像を同じ "無効"のスキンに設定できると思うので、ユーザーはこれが無効になっていることを理解するでしょう。しかし、それは非常に醜いコードになります - ボタンが無効になっている場合は、各アクション関数をチェックする必要があります –

+0

iOSで、私はこれを行うことができます:myButton.userInteractionDisabled = YESそして、無効になっています。 NSButtonと似たようなことができると思います。単に確認するために、enabledプロパティをNOに設定していました。これは、テキストの色の問題がどこから来ているのでしょうか? – Luke

答えて

1

IBの各状態にボタンのプロパティ(フォント、色)を設定できます。だから、無効にした状態のテキストの色を黒に設定すると助けになるだろうか?ココアタッチで

+0

IBでこのようなオプションが表示されません。私はIBを内蔵したxcode 4を使用しています –

+0

ココアはココアではありません。 – Kappe

-1

そのためのAPIがある:

[myButtonというSETTEXTCOLOR:[UIColor blackColor] forState:UIControlStateDisabled]。

ココアの場合はわかりません。

+4

これは、Cocoa Touchの問題を解決しますが、質問者が求めているのはCocoaではありません。 –

+0

私はそれを逃した、指摘のおかげで –

0

NSButtonCellをサブクラス化し、それをIBのボタンCELLに割り当てます(直接ボタンではなく、1つ上のレベル)。あなたが好きなようにサブクラスでは、次のとmodifiyサイズ、フォントや色を実装:

- (NSAttributedString*)attributedTitleForString:(NSString*)string 
{ 
    // Colors 
    NSColor *disabledColor = [NSColor grayColor]; 
    NSColor *enabledColor = [NSColor redColor]; 

    // Font 
    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 
    [style setAlignment:NSLeftTextAlignment]; 
    NSFont *font = [NSFont systemFontOfSize:11]; 

    // Enabled 
    NSDictionary *enabledAttrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
             enabledColor, NSForegroundColorAttributeName, 
             style, NSParagraphStyleAttributeName, 
             font, NSFontAttributeName, 
             nil]; 
    NSAttributedString* enabledTitle = [[NSAttributedString alloc]initWithString:string attributes:enabledAttrsDictionary]; 

    // Disabled 
    NSDictionary *disabledAttrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
             disabledColor, NSForegroundColorAttributeName, 
             style, NSParagraphStyleAttributeName, 
             font, NSFontAttributeName, nil]; 

    NSAttributedString* disabledTitle = [[NSAttributedString alloc]initWithString:string attributes:disabledAttrsDictionary]; 

    if (![self isEnabled]) 
     return disabledTitle; 
    else 
     return enabledTitle; 
} 

EDIT:のみsetWantsLayersは

関連する問題