2

雑誌のページをレイアウトするアプリがあります。アプリは、MasterPage(それ自体がNSScrollViewのcontentView)と呼ばれるNSViewに雑誌のページ(Pageと呼ばれるクラスのNSView)をレイアウトします。スクロールビューのページのグリッドについて考えてみてください。

「ページ」には、広告を表すサブビューが自動的に配置されます(クラス=広告)。これらの広告をスーパービュー(PageクラスのNSView)内およびMasterPageのサブビュー(他のPageクラスビュー)間でドラッグできるようにしたいと思います。

mouseDraggedメソッドを呼び出すことで元々配置されていたPageクラスNSViewにAdクラスNSViewをドラッグできますが、スーパービューからAdクラスサブビューを「解放」して別のNSViewにドラッグするにはどうすればよいですか?

うまくいけば、それは理にかなっています。

4

1 に答える 1

0

ドラッグ イベントを開始したら、ドラッグ ビューをそのスーパービューから削除し、 の に追加しcontentViewますNSWindow。その後、ウィンドウ全体にドラッグできます。ドラッグ イベントが完了したら、 を使用hitTest:して、現在のビューを特定します (実際に必要なビューを見つけるには、スーパービュー階層をさかのぼる必要がある場合があります)。次に、ドラッグ ビューを最終ターゲットに追加します。

ビューにクリッピングをどのように実装したかによっては、ドラッグするビューを に移動する手順をスキップできる場合がありますcontentView。ページ ビューをクリップしない場合、ドラッグ ビューが画面全体を移動しても問題ありません。

于 2011-10-25T17:13:23.133 に答える