从集合视图单元中拖动可在iPad模拟器上使用,但不适用于iPhone模拟器或Swift 4中的真实设备

mihai mimi

我在swift 4中使用新的拖放API。我需要通过长按它并将其拖放到视图控制器的视图上来拖动单元格。这是在同一应用程序中拖放的原因,因为它需要在iPhone上运行,并且此功能仅在同一应用程序的手机上有效。我使用一个真实的设备来测试我写的内容,但我想不出为什么一旦点击它就不能拖动单元格。但是在iPad上运行模拟器并...可以运行,我可以拖动它。我查看了Apple的文档,他们指定了可以在拖动过程中配置拖动项的外观,但是默认设置是,如果不存在委托函数的自定义实现或返回nil,则将拖动整个单元格。所以它应该仍然有效,它是在iPad上的模拟器中完成的,但在模拟iPhone或真实的iPhone上却没有。下面的代码清单。也许有人已经解决了这个问题,并且知道如何帮助我。谢谢。仅相关位:

class DefineRoomPropertiesVC: UIViewController {

//MARK: - Init.
override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .white
    setupTopMenuBar()
    setupViews()

    topMenuCollectionView.dragDelegate = self
}
   fileprivate let topMenuCollectionView: TopMenuBarCollectionView = {
    let layout = UICollectionViewFlowLayout()
    let collectionView = TopMenuBarCollectionView(frame: .zero, collectionViewLayout: layout)
    return collectionView
}()

}

extension DefineRoomPropertiesVC: UICollectionViewDragDelegate {
func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { // called when a drag is initiated.
    let image = topMenuCollectionView.imagesForTopSectionCell[indexPath.item]
    let itemProvider = NSItemProvider(object: image)
    let dragItem = UIDragItem(itemProvider: itemProvider)
    return [dragItem]
}

func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters? {
    return nil

}
由科瓦尔

也许您忘记实现某些委托的方法。这是很棒的教程:iOS 11编码:如何拖放到集合和表格中

确保将dragInteractionEnabled标志设置true

collectionView.dragInteractionEnabled = true

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章