如何在iOS 11中的UITextfield中启用拖动
我知道现在问iOS 11最新功能的开发还为时过早。这也表明,所有拖放功能都可以在iPad上使用。在iPhone上,拖放功能仅在应用程序中可用。 所以我希望在iPhone的单个应用程序中移动textfield。我查看了如何在iOS 11中的UITextfield中启用拖动,ios,iphone,xcode,drag-and-drop,drag,Ios,Iphone,Xcode,Drag And Drop,Drag,我知道现在问iOS 11最新功能的开发还为时过早。这也表明,所有拖放功能都可以在iPad上使用。在iPhone上,拖放功能仅在应用程序中可用。 所以我希望在iPhone的单个应用程序中移动textfield。我查看了UIDragInteraction类,但我不知道如何在UITextfield中启用或激活拖动功能,我还注意到.textDragDelegate属性添加到UITextfield中,但我不知道如何激活拖动 寻找已经实践过的建议或帮助 感谢iPhone,如果DnD用于同一屏幕,那么这很棘手
UIDragInteraction
类,但我不知道如何在UITextfield
中启用或激活拖动功能,我还注意到.textDragDelegate
属性添加到UITextfield
中,但我不知道如何激活拖动
寻找已经实践过的建议或帮助
感谢iPhone,如果DnD用于同一屏幕,那么这很棘手:
- 检测UITextField上的触摸
- 如果用户仍然触摸屏幕并移动手指,则创建此文本字段的“可视副本”李>
- 当手指移动时,移动此“可视副本”
- 当用户松开手指时,检测放置此“可视副本”的位置
- 创建uitextfield对象的副本,调用addSubview将其添加到正确的位置
- 调整此新uitextfield的自动布局约束
- 删除旧的uitextfield并调整与其相关的视图的自动布局
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。您可以在以下网址阅读更多内容:
及
我认为你的答案更多地与iPad有关,iPad在应用程序之间拖放,但我希望在同一个应用程序中使用DnD。啊,好的。我不明白这个问题。我会更新我的答案。你的意思是在屏幕之间拖动吗?还是只在应用程序的同一屏幕中显示DnD?
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])
}
}