2017-07-17 106 views
3

我已成立了我UITableView使用新的拖放API。现在自定义视图和Drop

if #available(iOS 11, *) { 
    self.tableView.dragDelegate = self 
    self.tableView.dropDelegate = self 
    self.tableView.dragInteractionEnabled = true 
    navigationController?.navigationBar.prefersLargeTitles = false 
} 

,我实现下面的方法可以使用自定义视图为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()或我的自定义视图。任何想法,我做错了什么?

回答

0

您使用的是iPhone?我不能肯定它目前正在为客户UIViewController截至2017年11月25日基于以下几点:在

  • 我下载了苹果sample project用于拖动和拖放在iPad
  • 我添加了一个断点dragInteraction并确认我能达到它
  • 我修改的目标是一个通用的应用程序(如iPhone,太)
  • 我跑了一个iPhone 8设备上,做了到达断点

作为进一步的建议,UITableViewControllerUICollectionViewController都有一个名为dragInteractionEnabled的属性。对于iPhone设备,该属性默认为false,更重要的是,该属性在UIViewController中甚至没有定义更高。在你看来

+0

你应该设置'.dragInteractionEnabled = TRUE;并在你的'UIDragInteraction'对象设置的'.isEnabled = TRUE; –