Rodrigo Borges Soares
iOS Developer @ VivaReal
Drag and Drop no iOS 11
Eu 🤓
• Manauara
• Desenvolvedor Mobile desde 2009
• Mestre em Computação Móvel @ UFMG 📡
• Lead iOS Developer @ VivaReal 🏡
Resumo
1. Drag and Drop
2. Definindo o modelo de dados arrastável
3. Customizando a experiência
Drag and Drop
Table Views, Collection Views e Custom Views 📱
Drag and Drop
Drag and Drop
• Table Views e Collection Views
• UICollectionViewDragDelegate, UICollectionViewDropDelegate
• Custom UIViews
• UIDragInterationDelegate, UIDropInteractionDelegate
• Classes importantes
• UIDragItem, UIDragSession, UIDropSession, NSItemProvider
• UIDragSession & UIDropSession
• Objetos criados pelo sistema para gerenciar o Drag/Drop
• UIDragItem
• Objetos que são arrastado em uma UIDragSession
• NSItemProvider
• Encapsula os dados arrastáveis
• NSString, NSAttributedString, NSURL, UIColor, UIImage
• NSItemProviderWriting: definir representação do seu modelo
Conceitos importantes
Drag em Collection Views
1. Criar um UICollectionViewDragDelegate
1. Criar UIDragItems (objetos que são arrastados)
2. Definir drag delegate da Collection View
Drag em Collection Views
1. Criar um UICollectionViewDragDelegate
Drag em Collection Views
2. Definir Drag Delegate da Collection View
Drag em Collection Views
Drag de múltiplos UIDragItem ao mesmo tempo
Drag em Custom Views
Drag em Custom Views
1. Criar um UIDragInteractionDelegate
1. Criar UIDragItems (objetos que são arrastados)
2. Instanciar e associar UIDragInteraction à View
Drag em Custom Views
Drag em Custom Views
1. Criar um UIDragInteractionDelegate
Drag em Custom Views
2. Instanciar e associar UIDragInteraction à View
Drop em Collection Views
Drop em Collection Views
1. Criar UICollectionViewDropDelegate
2. Definir drop delegate da Collection View
Drop em Collection Views
1. Criar UICollectionViewDropDelegate
• Como o drop é dentro da própria app, podemos usar o localObject da
UIDragItem
• UICollectionViewDropProposal mostra um feedback sobre o resultado do drop
• .cancel, .forbidden, .copy, .move
Drop em Collection Views
1. Criar UICollectionViewDropDelegate
Drop em Collection Views
2. Definir drop delegate da Collection View
Definindo representações de
dados
NSProviderItemWriting FTW! 🚀
Definindo representações de dados
• Melhor representação para um anúncio de imóvel?
• NSString (descrição, URL, etc)
• NSURL
• NSAttributedString (texto + foto)
• UIImage
• UIColor
• MKMapItem
Definindo representações de dados
Notes Messages
Definindo representações de dados
Como definir múltiplas representações de dados para um objeto?
Definindo representações de dados
Definindo representações de dados
NSItemProviderWriting! 🙏
Definindo representações de dados
Definindo representações de dados
Criando um contato para a agenda
Criando um contato para a agenda
Customizando a experiência
Implementando interfaces para os drag items 🖼
Customizando a experiência
Customizando a experiência
Bônus: Spring Loading
Navegando na interface durante o Drag 🚢
Spring Loading
Referências
• Drag and Drop - UIKit Documentation
• https://developer.apple.com/documentation/uikit/drag_and_drop
• Drag and Drop Human Interface Guidelines
• https://developer.apple.com/ios/human-interface-guidelines/user-interaction/
drag-and-drop/
• WWDC Drag and Drop Sessions
• https://developer.apple.com/videos/play/wwdc2017/203/
That’s all folks! ✌
Rodrigo Borges
rborges.soares@gmail.com
@rdgborges
lindekin.com/in/rdgborges
medium.com/@rdgborges
🤓
📧
🐦
💻
📝

Drag and Drop no iOS 11