拖放的自定义视图 [英] Custom view for Drag and Drop
本文介绍了拖放的自定义视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经设置了我的 UITableView
以使用新的拖放 API.
I have set up my UITableView
to use the new Drag and Drop APIs.
if #available(iOS 11, *) {
self.tableView.dragDelegate = self
self.tableView.dropDelegate = self
self.tableView.dragInteractionEnabled = true
navigationController?.navigationBar.prefersLargeTitles = false
}
现在,我实现了以下方法,以便能够为 d&d 使用自定义视图.
Now, I implemented the method below to be able to use custom views for the d&d.
@available(iOS 11.0, *)
func dragInteraction(_ interaction: UIDragInteraction, previewForLifting item: UIDragItem, session: UIDragSession) -> UITargetedDragPreview? {
print("Custom Preview method called!")
let test = UITextView.init(frame: CGRect.init(x: 0, y: 0, width: 200, height: 200))
test.text = "sfgshshsfhshshfshsfh"
let dragView = interaction.view!
let dragPoint = session.location(in: dragView)
let target = UIDragPreviewTarget(container: dragView, center: dragPoint)
return UITargetedDragPreview(view: test, parameters:UIDragPreviewParameters(), target:target)
}
然而,这个方法永远不会被调用.我从来没有看到 print()
或我的自定义视图.关于我做错了什么的任何想法?
However, this method never gets called. I never see the print()
or my custom view. Any ideas as to what I'm doing wrong?
推荐答案
创建UIDragItem时必须设置previewProvider
属性.
You have to set previewProvider
property when creating the UIDragItem.
let dragItem = UIDragItem(...)
dragItem.previewProvider = {
print("Custom Preview method called!")
let test = UITextView.init(frame: CGRect.init(x: 0, y: 0, width: 200, height: 200))
test.text = "sfgshshsfhshshfshsfh"
return UIDragPreview(view: test)
}
参见:https://developer.apple.com/文档/uikit/uidragitem/2890972-previewprovider?language=objc
这篇关于拖放的自定义视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文