2017-12-28 13 views
0

NSSpringLoadingDestinationを実装するNSOutlineViewサブクラスがあります。NSOutlineViewの読み込みはNSImageViewで終了しますが、NSButtonでは終了しません。

アウトラインビューにNSTableCellViewsが設定されています。各表のセル・ビューにはNSTextFieldとNSImageViewがあります。これはFinderウィンドウの名前列のように見えます:アイコンとテキスト。

行を別の行のテキストフィールドにドラッグすると、すべて正常に動作します。ただし、カーソルがNSImageViewを超えると、バネ荷重が終了します。

アウトラインビューでも、その行のハイライトが失われます。

イメージビューをイメージを含むNSButtonに置き換えると、スプリングロードは終了しません。アウトラインビューでハイライトが維持されます。

NSControlがスプリングローディングを中断しないのにNSImageViewがなぜそうするのか誰にでも教えてください。

いくつかのNSViewメソッドをオーバーライドしようとしましたが、画像ビューをボタンのように動作させることができません。

ありがとうございました。

+0

画像ビューは編集可能ですか?ドラッグペーストボードには何がありますか? 'NSImageView'はドラッグされたイメージを受け入れることができます。' NSButton'はドラッグできません。 – Willeke

+0

isEditable = false、allowCutCopyPaste = falseでも何も変更されません。私はまた、NSImageViewをサブクラス化し、NSSpringLoadingDestinationを実装しようとしました.disabledをspringLoadingEntered(_ :)に戻しましたが、うまくいきませんでした。その後、私はhitTest(_ :)を返すようにしましたが、nilを返しましたが運はありませんでした。これは私が理解していないことです:NSImageViewの代わりにNSButtonを使用すると、問題はなくなります。しかし、isSpringLoaded = falseの場合、画像ビューと同じ問題があります。私は、画像ビューではできないようなバネ荷重を無効にするために、そのプロパティが何をしているのだろうかと思っています。 – user5892643

+0

これを試しましたが、バネ荷重のあるボタンには画像ビューと同じ問題があり、バネ荷重のないボタンはありません。あなたは 'isSpringLoaded = false'について確かですか? – Willeke

答えて

0

画像ビューが編集不可能な場合でも、明らかにまだドラッグを処理しています& drop。この呼び出しを修正するには、画像ビューのunregisterDraggedTypesメソッドを使用します。

関連する問題