如何解决从 UITableView 拖动项目并放入 UIView 子类
我正在尝试在我的应用中实现拖放功能,用户从表格视图中拖动一个项目并将其放入自定义视图中。
我的表视图实现了 UITableViewDragDelegate 中的 tableView(_ tableView: UITableView,itemsForBeginning session: UIDragSession,at indexPath: IndexPath)
,而我的自定义视图实现了 UIDropInteractionDelegate 中的必要功能。表视图的 dragInteractionEnabled
属性设置为 true,其拖动委托设置为 self。
从表格视图中拖动是可行的,但我无法将这些项目拖放到我的自定义视图中(根本没有调用 dropInteraction 函数)。但是,将随机文件(例如图像)放入自定义视图确实有效,并且会调用 dropInteraction 函数。我不确定这是否重要,但表视图位于视图控制器中,该视图控制器是控制自定义视图的视图控制器的子级。
这是我的 itemsForBeginning 表视图函数:
func tableView(_ tableView: UITableView,at indexPath: IndexPath) -> [UIDragItem] {
let dragItem = UIDragItem(itemProvider: NSItemProvider())
dragItem.localObject = components[indexPath.item]
return [dragItem]
}
这是我的自定义视图中用于接受放置的代码。这段代码并不完整,我只是想让它运行起来。
func dropInteraction(_ interaction: UIDropInteraction,performDrop session: UIDropSession) {
for dragItem in session.items {
print(dragItem.itemProvider)
}
}
func dropInteraction(_ interaction: UIDropInteraction,sessionDidUpdate session: UIDropSession) -> UIDropProposal {
return UIDropProposal(operation: .copy)
}
func dropInteraction(_ interaction: UIDropInteraction,canHandle session: UIDropSession) -> Bool {
return true
}
任何帮助将不胜感激。此应用程序可在 iOS 14、iPadOS 14 和 MacCatalyst 上运行(目前在 macOS 10.15.7 上测试,因此 macCatalyst 13)。尽管 10.15.7 支持此功能,但它适用于 iOS 和 iPadOS,但不适用于 macOS。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。