#author("2018-05-09T15:28:45+09:00","default:wikiwriter","wikiwriter") #author("2018-05-10T20:13:30+09:00","default:wikiwriter","wikiwriter") &tag(Cocoa/ドラッグアンドドロップ); *目次 [#g6ead413] #contents *関連ページ [#c71dfd0f] *参考情報 [#i9d4339e] -[[Drag and Drop Tutorial for macOS]] *Tips [#j92ebe5d] **新しいスタイル [#p77a4026] -[[Drag and Drop in Swift - Issues with Registering for Dragged Types? - Stack Overflow:https://stackoverflow.com/questions/24343216/drag-and-drop-in-swift-issues-with-registering-for-dragged-types]]にある情報によると、registerForDraggedTypesに文字列で指定するタイプのコードは古く、registerですべてのコードを受け入れ、canReadObjectなどで制限するのが新しい方法らしい。 #pre{{ self.register(forDraggedTypes: [kUTTypeURL as String]) override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { let pasteboard = sender.draggingPasteboard() let filteringOptions = [NSPasteboardURLReadingContentsConformToTypesKey:NSImage.imageTypes()] if pasteboard.canReadObject(forClasses: [NSURL.self], options: filteringOptions) { return NSDragOperation.copy } return NSDragOperation() //alternatively: [] } }} *NSImageView [#p55896aa] **Image WellとImage Viewの違いって [#vbfada4f] -Interface BuilderではImage WellとImage Viewが追加できる。 -Image Wellはドラッグ&ドロップをサポートするとあるが、どちらもEditableにチェックを入れれば画像ドロップが可能。 -Image WellとImage Viewの違いは外見だけ? **ドロップ可能にする [#ed64c5c6] -Attributes InspectorでEditableにチェックを入れる -ドロップ時の画像サイズはScalingで調節。 --Proportionally Down: 縦横比を保ったまま縮小 --Axes Independently: 縦横比を無視して拡大・縮小 --None: 拡大縮小なし --Proportionally Up ow Down: 縦横比を保ったまま拡大 or 縮小 **フォーカスリングを表示しない [#j7f38801] -Editableにチェックを入れるとフォーカスの存在するビューに青いフォーカスリングが表示されるようになる。 -これを変更するにはAttributes InspectorのFocus RingをNoneに変更する。