2009-03-30 9 views
19

私は1つ以上のボタンを持つダイアログを持っていて、右端のものをデフォルトのものに設定できるようにしたいので、ユーザがEnterキーまたはReturnキーを押すと、ユーザーがクリックした。NSButtonのデフォルトの青い外観のボタン

私は[btn setKeyEquivalent:@"\r"]を使用していますが、それはうまく動作しますが、ボタンが青い外観になっていないようにしてください。私は何をする必要がありますか?

答えて

34

ボタンのベゼルのスタイルを正しく設定できないため、正しく表示されませんでした。私は今、このようボタンを設定しています:

[btn setBezelStyle:NSRoundedBezelStyle]; 

そして、デフォルトボタンを設定するには、これらの作業のいずれか:

[myWindow setDefaultButtonCell:[btn cell]]; 

または

[btn setKeyEquivalent:@"\r"] 
+0

この解決策を見て興奮して自分自身を汚してしまった。私がボタンを強制的にデフォルトのボタン・セルにして強制的にキーの等価物を設定するとは思わなかったとは信じられません。 NSViewにショートカットが返されるように設定されたキーが含まれている場合でも、この操作を行う必要があります。奇妙だが真実。ありがとう! – Kezzer

+4

Interface Builderでは、スタイル「プッシュ」を選択する必要があります。私はOS X 10.8.3(マウンテンライオン)のデフォルトのボタンセルとして設定されている場合、インターフェイスビルダが提供する15種類のスタイルすべてを調べ、プッシュのみが青色に輝いています。他のタイプは、リターンキーを同等のキーとして取り、デフォルトになりますボタンを押すだけで、 '押し 'ボタンが青色に点灯します。私はOS Xの他のバージョンでは全くテストしていません。この質問が2009年に尋ねられて答えられたとき、このメモはSnow Leopard(?)では必要ではない可能性が非常に高いです。 – ArtOfWarfare

+0

ありがとう。これは私を助けた:) – Sid

5

ドキュメントは言う:あなたが返すようにキー相当物を設定した場合、そのボタンがデフォルトのボタンになっていること

注意を。

したがって、正しく実行しています。

[button setNeedsDisplay:YES]; 

これにより、ボタンが強制的に再描画されます。

+0

ヨセミテ以上でまだ青みがかっていますか?私のダイアログには表示されません。たとえキーの同等物がReturn(少し左下の矢印記号)でも、 – Jay

1
[myWindow setDefaultButtonCell:[btn cell]]; // should do the trick. 

詳細はApple's documentationを参照してください。

2

私の設定では、カスタムシートとなっていますデフォルトのボタンをNSAlertのように見せたいと思っていました。次の設定では、デフォルトの青色の外観が得られます。 10.12.3 Sierraで動作します。

button.bezelstyle = NSBezelStyleRounded; // Push in Interface Builder 
    button.keyEquivalent = @"\r"; 
    button.highlighted = YES; // this is the most important part. 
関連する問題