Drag/Drop 在 3 个 ScrollView 之间 [iOS ]
Drag/Drop between 3 ScrollViews [ iOS ]
是否可以有 3 个滚动视图假设中间是主要的,用户可以在其中找到对象,然后用户可以拖动任何项目并将其放到右侧滚动视图或左侧滚动视图中,这样对象将是从中间删除并向右或向左删除取决于用途,假设用户将其放在左侧,因此系统应将新对象添加到左侧滚动视图,但是当用户删除此对象并将 return 返回到如果对象编号为 2,则 main(中间)优先于在相同的旧索引中删除和添加,然后对象将在索引 2 处添加和删除 ..etc.
你能帮忙实现这个功能吗?
让我们称这些项目为 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;
你需要做一个模型class比如ItemModel
继承UIView
或者NSObject
,在ItemModel.h
做一些属性(what 属性你需要和一个属性关于UIScrollView
包含这个模型)
首先,将所有模型放入 mainView 的数据源mainArray
,在您的 self.view
中显示模型并调用 self.view bringSubviewToFront:
并为所有模型提供一个 UIPanGestureRecognizer
和一个方法来回复 UIPanGestureRecognizer
以便您可以拖动它们。
这是最重要的部分:
因为要让所有模型都包含在三个UIView中,所以必须计算self.view.frame
之间的模型frame和三个UIView
frame的关系。事实上,所有的modelViews都包含在self.view
中,但在视觉显示时,所有的modelViews都包含在UIScrollViews中。
其次,你已经有了三个UIView
的框架,当你拖动模型时,你可以CGPoint
获取拖动的位置,然后调用方法CGRectContainsPoint(CGRect rect, CGPoint point)
,这样您就可以获得包含您拖动的点的任何视图。
例如,您将model1
从mainView
拖到leftView
,您可以从CGRectContainsPoint(leftview.frame, point)
得到一个YES
,然后移除model1
来自 mainArray
并把 model1
放在 leftArray
中,同时你需要 re-layout 这三个 UIViews
.
这是我的 gif 分享 URL:https://pan.baidu.com/s/1slFBva9
是否可以有 3 个滚动视图假设中间是主要的,用户可以在其中找到对象,然后用户可以拖动任何项目并将其放到右侧滚动视图或左侧滚动视图中,这样对象将是从中间删除并向右或向左删除取决于用途,假设用户将其放在左侧,因此系统应将新对象添加到左侧滚动视图,但是当用户删除此对象并将 return 返回到如果对象编号为 2,则 main(中间)优先于在相同的旧索引中删除和添加,然后对象将在索引 2 处添加和删除 ..etc.
你能帮忙实现这个功能吗?
让我们称这些项目为 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;
你需要做一个模型class比如ItemModel
继承UIView
或者NSObject
,在ItemModel.h
做一些属性(what 属性你需要和一个属性关于UIScrollView
包含这个模型)
首先,将所有模型放入 mainView 的数据源mainArray
,在您的 self.view
中显示模型并调用 self.view bringSubviewToFront:
并为所有模型提供一个 UIPanGestureRecognizer
和一个方法来回复 UIPanGestureRecognizer
以便您可以拖动它们。
这是最重要的部分:
因为要让所有模型都包含在三个UIView中,所以必须计算self.view.frame
之间的模型frame和三个UIView
frame的关系。事实上,所有的modelViews都包含在self.view
中,但在视觉显示时,所有的modelViews都包含在UIScrollViews中。
其次,你已经有了三个UIView
的框架,当你拖动模型时,你可以CGPoint
获取拖动的位置,然后调用方法CGRectContainsPoint(CGRect rect, CGPoint point)
,这样您就可以获得包含您拖动的点的任何视图。
例如,您将model1
从mainView
拖到leftView
,您可以从CGRectContainsPoint(leftview.frame, point)
得到一个YES
,然后移除model1
来自 mainArray
并把 model1
放在 leftArray
中,同时你需要 re-layout 这三个 UIViews
.
这是我的 gif 分享 URL:https://pan.baidu.com/s/1slFBva9