2017-07-17 107 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; –