在3个ScrollViews之间拖放[iOS]

时间:2017-02-19 04:08:20

标签: ios objective-c cocoa-touch draggable

是否有可能有3个滚动视图让我们说中间是用户在其中找到对象的主要位置,然后用户可以拖动任何项目并将其拖放到右侧滚动视图或左滚动视图,以便从中删除对象中间和向右或向下丢弃取决于用途,并假设用户将其放到左侧,因此系统应该向左滚动视图添加新对象,但是当用户删除此对象并返回到主(中)首选时如果对象是数字2,则删除并添加到相同的旧索引中,然后在索引2 ..etc处添加和删除对象。

你能帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

让我们调用项目model1 ... model3;

@property (nonatomic, strong) NSMutableArray *mainArray;
@property (nonatomic, strong) NSMutableArray *leftArray;
@property (nonatomic, strong) NSMutableArray *rightArray;

@property (nonatomic, strong) UIScrollView *mainView;
@property (nonatomic, strong) UIScrollView *leftView;
@property (nonatomic, strong) UIScrollView *rightView;

您需要制作一个模型类,例如ItemModel继承UIViewNSObject,在ItemModel.h中制作一些属性(您需要的属性和属性{{1} 1}}包含此模型)

首先,将所有模型放在mainView的数据源UIScrollView中,在mainArray中显示模型并调用self.view并为所有模型提供self.view bringSubviewToFront:和回复UIPanGestureRecognizer的方法,以便您可以拖动它们。

这是最重要的部分:

因为您希望所有模型都包含三个UIView,所以您必须在UIPanGestureRecognizer和三个self.view.frame帧关系之间计算模型框架。实际上,所有modelView都包含在UIView中,但在可视化显示时,所有modelView都包含在UIScrollViews中。

其次,你已经拥有三个self.view的框架,当你拖动模型时,你可以得到关于拖动位置的UIView,然后调用方法CGPoint,所以你可以获得包含您拖动点的任何视图。

例如,您将CGRectContainsPoint(CGRect rect, CGPoint point)model1拖到mainView,您可以从leftView获得YES,然后移除CGRectContainsPoint(leftview.frame, point)来自model1并将mainArray放入model1,同时您需要重新布置三个leftArray

enter image description here

enter image description here

enter image description here

这是我的gif共享网址:https://pan.baidu.com/s/1slFBva9