0

私は最初の Cocoa アプリを作成しています。3D OpenGL シーンを回転させるための「トラックボール / 眼球 / アークボール / あらゆる名前のボタン」を作成したいと考えています。

Pages (Apple iWork スイート) で 3D グラフを選択すると、このカスタム Cocoa コントロールの完璧な例があります。いくつかのハッキングの後、このコントロールは として参照されているようSFC3DRotateWidgetです。Pages のコントロールのスクリーンショットを次に示します。

このウィジェットは再利用可能かもしれませんが、方法や場所がわかりませんでした。なので再現してみる。

私は Cocoa に慣れていないので、それを行う方法も正確な場所もわかりません (つまり、Interface Builder をどうするか、コードをどうするか...)。

描画機能をオーバーライドする必要があるかどうかはわかりません。テクスチャ ボタン (Interface Builder) とNSTrackingArea(コード) を使用してマウス イベント (移動、ドラッグなど) を処理することを考えましたが、領域は必然的に長方形になります。Apple が使用するカスタム コントロールのインタラクティブ ゾーンは、矢印の形に従っているようです。私はNSBezierPathより具体的な領域を作成するために使用できるSOを読んだことがあります(コードを介してのみ?)。

いい感じですか?私は何かが恋しいですか?

共有できるヒント、コツ、リソースがあればお知らせください。

ありがとう!

4

1 に答える 1

0

カスタム コントロールを作成したいようです。これを行うには、NSControl をサブクラス化します。これには、方法に関するガイドがあります。さまざまなメソッドを実装することで、円形のクリック可能領域とマウス イベントへの応答を制御できます。たとえば、mouseDown:および関連するメソッドを使用してマウス イベントを追跡できます。

おそらくカスタム描画コードを使用する必要はありません。コードで描画したくない場合をNSImageView除き、さまざまな矢印を持つサブビューはおそらく目的に適しています。

于 2012-08-30T14:54:50.060 に答える