1

これは OSX に関するものです。iOS は私には関係ありません。InterfaceBuilder で NSButton を作成し、そのベゼルを「Radio」に設定しました。このボタンは、デフォルトではチェックされていません。私のアプリケーションではもちろんチェックできますが、もう一度クリックしてもチェックが外されません.ラジオボタンは通常そうではありません.

ここで私の質問は、タイプを「ラジオ」に固定しているように見える「ラジオ」のベゼルを備えた NSButton を取得して、代わりにタイプが「スイッチ」であったように動作させることは可能かということです (タイプ「スイッチ」はできませんベゼルが「ラジオ」のときに選択されるため、これはコードで行う必要があると思います)。

問題は、これが理にかなっているのかどうかではありません:-)それが可能かどうか、そしてどのような手段で実行できるかです。

編集:ベベル「ラジオ」を選択し、Interface Builder でタイプを「プッシュ オン プッシュ オフ」または「オン オフ」に設定すると、ベゼルはボタンの「ベベル」に切り替わりますが、ラジオ ボタンの外観は、これらを実行している限り維持されます。その順序で変化し、その後は何も触れません。ボタンもオン/オフとして機能します。ただし、入手しようとしているオリジナルの「ラジオ」ベゼルとは 1 つの違いがあります。このボタンを NSBox で使用していますが、「プッシュ オン プッシュ オフ」タイプに設定されている場合、ウィンドウの背景色を描画しないようにすることはできません。問題のスクリーンショットは次のとおりです。

下の要素はベベル "ラジオ" / タイプ "ラジオ" で、上の要素は上記のようにタイプ "プッシュ オン プッシュ オフ" に切り替えられました。その窓色の四角形をどうにかして消すことはできますか、それとも別のアプローチがありますか?

EDIT 2: NSButtonCell に応じて IBOutlet を作成してから使用しようとしました:

[myButtonCell setBackgroundColor:[NSColor clearColor]];

ただし、アルファ成分は無視され、黒の背景になります。これを解決する方法はまだわかりません...

解決策:奇妙に思えるかもしれませんが、タイプを「Momentary Change」に設定すると、1 回のクリックでボタンがオンになり、次のクリックでオフになり、上記のバックグラウンドの問題が解消されることがわかりました。問題はありません。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/Reference/Reference.html#//apple_ref/c/econst/NSPushOnPushOffButtonのドキュメントが「 Momentary Change": "ボタンを押している間、代替画像と代替タイトルが表示されます。ボタンを押していないときは、通常の画像と代替タイトルが表示されます。" わかりません-ボタンを押しても何も起こりません...

編集 3: 上記のソリューションは MacOS 10.12 (Sierra) では崩壊します。10.11 まですべてが正常に機能していた場合、結果のボタンが「オン」として表示されることはありません。

4

2 に答える 2

1

のようにNSSwitchButton見えるボタンの動作が必要なNSRadioButton場合 はsetImage:、ダミーのsetAlternateImage:NSSwitchButtonimagealternateImageNSRadioButton

于 2013-08-01T20:52:27.937 に答える
0

このApple Documentの「スティッキー ボタン」セクションを確認してください。

于 2012-08-22T13:58:49.910 に答える