NSView Subviews прерывая операцию перетаскивания
У меня есть NSView, который зарегистрирован для операции перетаскивания.
В этом представлении у меня есть подкласс NSScrollView, который сам по себе имеет NSImageView в нем.
При перетаскивании на исходный NSView все в порядке, за исключением случаев, когда я перетаскиваю вышеупомянутый NSImageView, который, кажется, прерывает перетаскивание, и я не могу попасть на него (или фактически на вид под ним).
NSScrollView, по-видимому, игнорирует перетаскивание и позволяет ему пройти к базовому NSView, но как я могу сделать это для NSImageView, чтобы перетаскивание регистрировалось через себя, его суперпредставление (NSScrollView) и на базовый NSView.
2 ответа
Вы можете отменить регистрацию NSImageView в качестве места перетаскивания. Его суперпредставление будет обрабатывать сеанс перетаскивания, если оно настроено для этого.
[imageView unregisterDraggedTypes];
О, спасибо большое @Steven!
Свифт 4.2 а @IBOutlets
:
@IBOutlet private weak var imageView: NSImageView! {
didSet {
imageView.unregisterDraggedTypes()
}
}
Длинная история:
У меня было это NSCollectionView
, который загрузил кастом NSCollectionViewItem
из XIB
файл.
Коллекция принимает операции удаления (collectionView.registerForDraggedTypes([.fileURL])
).
Но как только что-то упало в нее и таможенная ячейка была "снята с производства" (makeItem(withIdentifier:for:)
) - операции отбрасывания перестали работать над этой конкретной ячейкой.
unregisterDraggedTypes()
действительно исправляет проблему.