我知道要求开发iOS 11 Drag and Drop的最新功能还为时过早。这也表示 iPad上提供了所有拖放功能。在iPhone上,只能在应用程序中使用拖放功能。
所以我想在iPhone中的单个应用程序中移动文本字段。我查看了UIDragInteraction
课程,但我不知道如何在UITextfield
中启用或激活拖动功能,我也注意到.textDragDelegate
属性已添加到UITextfield
但我不知道知道如何主动拖动。
寻找已经练习过的建议或帮助。
由于
答案 0 :(得分:2)
对于iPhone,如果DnD用于同一屏幕,那就太棘手了:
对于屏幕之间的DnD,从技术上讲,它是可能的,但应用程序必须根据该要求进行设计。
要启用对iPad的UIView对象的拖动,您必须创建一个dragInteraction并将其添加到您的UIViewObject。然后,您还必须为您的ViewController启用dropInteraction。
例如(未经测试):
@IBOutlet weak var dragableTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//enable drag for your 'dragableTextField'
let dragInteraction = UIDragInteraction(delegate: self)
self.dragableTextField.addInteraction(dragInteraction)
//set up drop interaction delegate to this ViewController.
let dropInteraction = UIDropInteraction(delegate: self)
self.view.addInteraction(dropInteraction)
}
并实施这些委托
extension ViewController : UIDragInteractionDelegate {
//this is mandatory
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
//implement your code
}
}
extension ViewController : UIDropInteractionDelegate {
//this is optional
func dropInteraction(_ interaction: UIDropInteraction, canHandle session: UIDropSession) -> Bool {
// If you want to enable drag-drop on UITextField object only:
return session.canLoadObjects(ofClass: [UITextField.self])
}
}
您需要更多工作才能在目标目标上加载数据或更新UI。您可以在以下网址阅读更多信息:
https://developer.apple.com/documentation/uikit/drag_and_drop/making_a_view_into_a_drop_destination