在表视图/集合视图中采用拖放在 iPhone 上不起作用

Posted

技术标签:

【中文标题】在表视图/集合视图中采用拖放在 iPhone 上不起作用【英文标题】:Adopting Drag and Drop in a Table View / Collection View not working on iPhone 【发布时间】:2018-03-01 20:50:37 【问题描述】:

有谁知道为什么 Apple 的 在表格视图中采用拖放操作的示例在 iPhone 上不起作用?

复制步骤:

    从https://developer.apple.com/documentation/uikit/drag_and_drop/adopting_drag_and_drop_in_a_table_view下载代码 打开项目并更改部署目标 -> 设备为通用。 在 iPhone(模拟器)上运行应用程序。 尝试拖动一些单元格。

拖放功能不起作用,但其行为方式应与 iPad 设备上的相同。连函数

func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem]

没有被调用。

配置:

Xcode 版本 9.0 (9A235) Apple Swift 4.0 版 (swiftlang-900.0.63 clang-900.0.37) 模拟器版本 10.0 (SimulatorApp-829.6 CoreSimulator-494.13.6)

【问题讨论】:

【参考方案1】:

UITableView & UICollectionView 具有 dragInteractionEnabled: Bool 实例属性。

Xcode 的文档:

此属性的默认值在 iPad 上为 true,在 iPhone 上为 false。在 iPhone 上将值更改为 true 可以将内容从 table view 拖动到 iPhone 上的另一个应用程序并接收来自其他应用程序的内容。

TableViewController.swift中,添加

tableView.dragInteractionEnabled = true

viewDidLoad() 中(我在设置dragDelegatedropDelegate 之前添加了它,它似乎工作正常)。

【讨论】:

感谢您的解决方案。我打算只在同一个应用程序的表格视图中拖动项目,这样文档就不清楚了。 工作,谢谢,你知道如何将该单元格拖动到选项卡视图的另一个选项卡吗?

以上是关于在表视图/集合视图中采用拖放在 iPhone 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将 UILabel 放在集合视图的中心?

在表视图内的集合视图中传递多维数组

在表视图或集合视图中删除与 IndexPath 关联的 CKRecord 的稳健方法是啥?

iPhone/iOS:如何为 Scrollview 的子视图实现拖放?

相机视图在 iPhone 上不起作用,在另一个上起作用

添加 AVPlayerLayer 作为当前视图的子层在 iPhone 5 上不起作用