2017-02-19 7 views
0

3 개의 스크롤 뷰를 가질 수 있습니까? 중간이 사용자가 내부에서 개체를 찾을 수있는 주라고 말하면 사용자는 항목을 끌어서 오른쪽 스크롤보기 또는 왼쪽으로 놓을 수 있습니다 스크롤 뷰가 중간에서 제거되고 오른쪽 또는 왼쪽으로 떨어지는 것은 사용법에 따라 다르며 사용자가 왼쪽으로 놓았다 고 가정하면 시스템은 왼쪽 객체를 새로운 스크롤 뷰에 추가해야하지만 사용자가이 객체를 제거하고 리턴하면 주 (중간)로 돌아가서 객체가 숫자 2이면 동일한 이전 색인에 추가되고 추가되었습니다. 그러면 객체는 색인 2에 추가되고 삭제됩니다.3 개의 ScrollViews 사이에서 끌어서 놓기 [iOS]

이 기능을 사용 하시겠습니까?

+0

예, 이것은 잠시 solved.wait 할 수있다, 나는 내 생각을 넣어 내 대답. –

+0

@ezatu ∴ 친절한 지원을 기다리고 있습니다. – SimpleojbC

답변

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.h에, 모델 클래스와 같은 ItemModel 상속 UIView 또는 NSObject을 할 필요가 (당신이 필요 재산과 UIScrollView는이 모델을 포함하는 대한 속성)

첫째, 모든 모델을 넣어 mainView의 데이터 소스 mainArray에서 self.view에 모델을 표시하고 self.view bringSubviewToFront:으로 전화를 걸어 모든 모델에 UIPanGestureRecognizerUIPanGestureRecognizer에 응답하는 방법을 지정하여 드래그 할 수 있습니다.

모든 모델은 세 가지 UIViews에 포함되고 싶지 때문에, 당신은 self.view.frame와 세 UIView 프레임 관계의 모델 프레임을 계산해야합니다

이 가장 중요한 부분입니다. 실제로 모든 modelViews는 self.view에 포함되어 있지만 시각적으로 표시되면 모든 modelViews가 UIScrollViews에 포함됩니다.

둘째, 당신은 이미 당신이 모델을 드래그 할 때, 당신은 당신이 끌어 포인트가 포함 된 뷰를 얻을 수 있도록 다음 방법 CGRectContainsPoint(CGRect rect, CGPoint point)를 호출, 드래그의 위치에 대해 CGPoint를 얻을 수 있습니다, 세 UIView의 프레임을 가지고있다.

는 exexample를 들어, 그 사이에 당신이 다시 배치하는 세 가지 UIViews 필요, 당신은 다음 mainArray에서 model1을 제거, CGRectContainsPoint(leftview.frame, point)에서 YES을 얻고 leftArraymodel1을 넣을 수 있습니다, leftViewmainView에서 model1을 끕니다. 여기

enter image description here

enter image description here

enter image description here

은 GIF 내 공유 URL입니다 : https://pan.baidu.com/s/1slFBva9

+0

모델 클래스를 표시하고 드래그하는 데 동의해야하기 때문에 모델 클래스에 'UIView'를 상속하는 것이 좋습니다. –

+0

감사합니다. 하지만 이것은 내 생각이었고 문제는 객체가 중간 scrollview의 addSubview가 중간 scrollview의 외부로 끌 수 없다는 것입니다. 그래서 우리는 무엇을 할 수 있습니까? – SimpleojbC

+0

미안하지만,이 문제는 잊어 버리고 대답을 바꿀 것입니다. 어떻게이 문제를 해결했는지 알 수 있습니다. –