Cocoa で単純なフォーム デザイナーを構築したいと考えており、マウスを使用してフォーム上でコントロールを移動する必要があります (クリック、ホールド、移動、リリース)。
これらのイベントをインターセプトするには、すべてのコントロール クラスから新しいクラスを継承する必要がありますか? 任意のコントロールに対して一般的に実装する方法はありますか?
コントロールを含むカスタム ビューを記述します。-hitTest:
コントロールを無視して代わりに戻るようにオーバーライドしself
ます。次に、マウス イベントを受け取ったら、それらが適用されるコントロールを特定し、適切に移動します。
1 つの方法は、コントロールが配置されるすべてのスペースを埋める 1 つの大きなカスタム ビューを持つことです。このビューでマウス イベントを実装するために必要なメソッドを実装し、コントロール ビューでヒット検出を行い、それらを移動します。このアプローチでは、NSView の 1 つのカスタム サブクラスのみが必要であり、サブクラス化せずに移動したい任意のビューまたはコントロールを使用できます。