IOS drag and drop between scroll views
Asked Answered
S

1

7

So here is the catch. I have two Scroll Views, one is filled with 10 odd subviews, that are basically like playing cards (custom class views). I want to be able to drag and drop some of these views to the empty scroll bar that i have.

There are many different views in between these two scroll views. So i want to show the view being actually dragged from one view and being placed in the other scroll view. How do i achieve this.

I know i have to use touches, but if anyone can whip up a quick example, i'll be greatful. Thanks.

Saponaceous answered 16/9, 2011 at 11:49 Comment(4)
yeah sorry bout that it is indeed 'iOS' :)Saponaceous
No one has any answers for this???Saponaceous
I am surprised no one came across such a requirement before.Saponaceous
can you provide me sample code?Satiable
T
7

Its very easy. ScrollView is like any other view so it's basically drag and drop a view from one superview to another superview.

Your hierarchy is the following: You want to drag and drop a view V from a view A to a view B. That means that when you start D&D, V is subview of A and when you finish, V is subview of B. A and B must have a common superview S.

Steps: 0/ Your touch recognizer must be on S, not on A or B.

1/ User taps on V. You remove it from A and add it to S on the same position (UIView has methods to transform position from a view to another view).
2/ User drags V to B. You change V's position in S.
3/ User drops V. If it's close enough to B, insert it to B (transforming position S->B) and animate the difference between positions. If it's still close to A, animate it back to A. If it's somewhere between A and B you can either insert it to the nearest one or let it stay there and block all other user interaction until user tap V again and drags it into A or B.

Tsarina answered 1/11, 2011 at 16:23 Comment(3)
Thanks Sulthan I had already implemented a similar piece of code. Just forgot to update the status here :) But how do you block all other user interaction and just enable one on V??Saponaceous
Just one question though.. I'm using a bunch of these small views, and wanted that at one time, i interact with only one of them. That is multiple drags should not happen. They do happen in IPAD. How do i resolve this???Saponaceous
Possibility a/ Before you start dragging, check if there are now views already being dragged. b/ Just block all other components when you start dragging.Tsarina

© 2022 - 2024 — McMap. All rights reserved.