拖拽操作在iPad上是支持跨应用程序的,你可以从一个应用中拖取项目,通过Home键回到主界面并且打开另一个应用程序,然后将被拖拽的项目传递给这个应用程序中。在iPhone上,拖拽操作只支持当前应用程序内,你可以将某个元素从一个界面拖拽到另一个,这种维度的操作可以给设计人员更大的灵活性。拖拽操作被设计成系统管理,开发者不需要为App申请特殊的用户权限。
效果:
一、引言
在iOS11中,你可以将图片直接拖入聊天软件进行发送,可以将文档、音乐、视频文件等文件拖入相应应用程序直接进行使用。这种拖拽操作交互极大的方便了手机的使用,丰富了手机的用户体验感。
效果如图:
二、涉及关键的概念
主要涉及的大体概括的对象就是: 拖拽源(按住需要拖拽的控件)、
放置目标(拖拽到的目的地)、
拖拽行为(UIDragInteraction)、
放置行为(UIDropInteraction)。
粗俗的过程:把拖拽行为加在拖拽源上,放置行为加在放置目标上,然后分别实现拖拽行为代理(UIDragInteractionDelegate)和放置行为代理方法(UIDropInteractionDelegate),就能实现拖拽效果了。
三、UIDragInteractionDelegate协议
开始拖拽
对刚开始拖动处于 lift 状态的 item 会有一个 preview 的预览功效
向当前已经存在的拖拽事件中添加一个新的 UIDragItem
拖拽不同阶段的动画
四、UIDropInteractionDelegate协议
这个方法返回是否响应此放置目的地的放置请求
这个方法当用户进行放置后会调用,可以从session中获取被传递的数据
设置以何种方式响应拖放会话行为
设置放置预览动画
简单的实现就是这样,里面还涉及到很多,就不一一讲述,可以详细见demo