0

Xcode 4.6.3 で 8 つのカスタム ボタン (NSButton) を作成しようとしています。それらは円のセグメントです。それぞれに標準の長方形のボタンを使用し、各セグメントにカスタム イメージを追加しました。ただし、ピースを 1 つの円にまとめると、これらのボタンの一部をクリックする方法がありません。各ボタンの周りの長方形の領域が重なって、残りの半分のボタンに到達できないからです。

これらのボタンをすべてクリックできるように、ボタンの形状を少なくとも三角形にする方法があるかどうか疑問に思っていましたか?

4

1 に答える 1

1

ドキュメント「View Programming Guide」から:

注: パフォーマンス上の理由から、Cocoa は兄弟ビュー間のクリッピングを強制したり、兄弟ビューがオーバーラップした場合の正しい無効化や描画動作を保証したりしません。ビューを別のビューの前面に描画する場合は、前面ビューを背面ビューのサブビュー (または子孫) にする必要があります。

つまり、重なり合うビューがマウス イベントを適切に処理することは期待できません。ビューが長方形のフレームを占めるという事実を回避する方法はありません。すべての円セグメント (描画とイベント処理、およびオプションでマウス移動イベントを含む) の作業を実行する単一のビューを作成する必要があります。三角法を使用して、マウス クリックが発生するセグメントを計算し、セグメントを再描画して目的のアクションを呼び出すことで、ボタンが押されたように適切に応答する必要があります。

于 2013-07-27T19:07:58.377 に答える