これは 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 まですべてが正常に機能していた場合、結果のボタンが「オン」として表示されることはありません。