NSSpringLoadingDestinationを実装するNSOutlineViewサブクラスがあります。NSOutlineViewの読み込みはNSImageViewで終了しますが、NSButtonでは終了しません。
アウトラインビューにNSTableCellViewsが設定されています。各表のセル・ビューにはNSTextFieldとNSImageViewがあります。これはFinderウィンドウの名前列のように見えます:アイコンとテキスト。
行を別の行のテキストフィールドにドラッグすると、すべて正常に動作します。ただし、カーソルがNSImageViewを超えると、バネ荷重が終了します。
アウトラインビューでも、その行のハイライトが失われます。
イメージビューをイメージを含むNSButtonに置き換えると、スプリングロードは終了しません。アウトラインビューでハイライトが維持されます。
NSControlがスプリングローディングを中断しないのにNSImageViewがなぜそうするのか誰にでも教えてください。
いくつかのNSViewメソッドをオーバーライドしようとしましたが、画像ビューをボタンのように動作させることができません。
ありがとうございました。
画像ビューは編集可能ですか?ドラッグペーストボードには何がありますか? 'NSImageView'はドラッグされたイメージを受け入れることができます。' NSButton'はドラッグできません。 – Willeke
isEditable = false、allowCutCopyPaste = falseでも何も変更されません。私はまた、NSImageViewをサブクラス化し、NSSpringLoadingDestinationを実装しようとしました.disabledをspringLoadingEntered(_ :)に戻しましたが、うまくいきませんでした。その後、私はhitTest(_ :)を返すようにしましたが、nilを返しましたが運はありませんでした。これは私が理解していないことです:NSImageViewの代わりにNSButtonを使用すると、問題はなくなります。しかし、isSpringLoaded = falseの場合、画像ビューと同じ問題があります。私は、画像ビューではできないようなバネ荷重を無効にするために、そのプロパティが何をしているのだろうかと思っています。 – user5892643
これを試しましたが、バネ荷重のあるボタンには画像ビューと同じ問題があり、バネ荷重のないボタンはありません。あなたは 'isSpringLoaded = false'について確かですか? – Willeke