SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
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
🤓
📧
🐦
💻
📝

Mais conteúdo relacionado

Semelhante a Drag and Drop no iOS 11

MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...Juliana Chahoud
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Apostila auto cad 3d 2012 essencial
Apostila auto cad 3d 2012 essencialApostila auto cad 3d 2012 essencial
Apostila auto cad 3d 2012 essencialpinguleco
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo OliveiraRonildo Oliveira
 
123436039 apostila-auto cad-3d-2012-essencial
123436039 apostila-auto cad-3d-2012-essencial123436039 apostila-auto cad-3d-2012-essencial
123436039 apostila-auto cad-3d-2012-essencialMarcos Vinícius
 
Desenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidDesenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidNelson Glauber Leal
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderersakamud
 
jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptLuiz Oliveira
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSAndrei Rosseti
 

Semelhante a Drag and Drop no iOS 11 (20)

Custom Views - O guia definitivo
Custom Views - O guia definitivoCustom Views - O guia definitivo
Custom Views - O guia definitivo
 
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
 
Apresentação Google Android
Apresentação Google AndroidApresentação Google Android
Apresentação Google Android
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Principais dicas para UIs do Android
Principais dicas para UIs do AndroidPrincipais dicas para UIs do Android
Principais dicas para UIs do Android
 
Mobile conf
Mobile confMobile conf
Mobile conf
 
Apostila auto cad 3d 2012 essencial
Apostila auto cad 3d 2012 essencialApostila auto cad 3d 2012 essencial
Apostila auto cad 3d 2012 essencial
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo Oliveira
 
123436039 apostila-auto cad-3d-2012-essencial
123436039 apostila-auto cad-3d-2012-essencial123436039 apostila-auto cad-3d-2012-essencial
123436039 apostila-auto cad-3d-2012-essencial
 
IBDESIGNABLE
IBDESIGNABLEIBDESIGNABLE
IBDESIGNABLE
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
Desenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidDesenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos Android
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderers
 
jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com Javascript
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOS
 
Caelum Day In Rio
Caelum Day In RioCaelum Day In Rio
Caelum Day In Rio
 
CSS & JQquery
CSS & JQqueryCSS & JQquery
CSS & JQquery
 

Mais de Rodrigo Borges

Migrando para o Swift 3
Migrando para o Swift 3Migrando para o Swift 3
Migrando para o Swift 3Rodrigo Borges
 
Notificações no iOS 10
Notificações no iOS 10Notificações no iOS 10
Notificações no iOS 10Rodrigo Borges
 
3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOS3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOSRodrigo Borges
 
Ingressos no pulso - Levando festas e ingressos para o Apple Watch
Ingressos no pulso - Levando festas e ingressos para o Apple WatchIngressos no pulso - Levando festas e ingressos para o Apple Watch
Ingressos no pulso - Levando festas e ingressos para o Apple WatchRodrigo Borges
 
Ingresse e o Apple Watch
Ingresse e o Apple WatchIngresse e o Apple Watch
Ingresse e o Apple WatchRodrigo Borges
 
Um Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes VeicularesUm Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes VeicularesRodrigo Borges
 

Mais de Rodrigo Borges (8)

Migrando para o Swift 3
Migrando para o Swift 3Migrando para o Swift 3
Migrando para o Swift 3
 
Notificações no iOS 10
Notificações no iOS 10Notificações no iOS 10
Notificações no iOS 10
 
3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOS3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOS
 
Hello, WWDC 2016!
Hello, WWDC 2016!Hello, WWDC 2016!
Hello, WWDC 2016!
 
Ingressos no pulso - Levando festas e ingressos para o Apple Watch
Ingressos no pulso - Levando festas e ingressos para o Apple WatchIngressos no pulso - Levando festas e ingressos para o Apple Watch
Ingressos no pulso - Levando festas e ingressos para o Apple Watch
 
Ingresse e o Apple Watch
Ingresse e o Apple WatchIngresse e o Apple Watch
Ingresse e o Apple Watch
 
Um Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes VeicularesUm Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
 
Going Mobile
Going MobileGoing Mobile
Going Mobile
 

Drag and Drop no iOS 11