2017-02-19 3 views
0

Ist es möglich, 3 Scroll-Ansichten zu haben, sagen wir, die Mitte ist der Hauptbereich, wo Benutzer Objekte finden, dann kann Benutzer jedes Element ziehen und es in die rechte Bildlaufansicht oder links Scroll-Ansicht, so dass das Objekt aus der Mitte entfernt wird und entweder rechts oder links fallen gelassen wird, hängt von den Verwendungen ab und nimmt an, dass der Benutzer es nach links fallen ließ. Das System sollte daher ein neues Objekt zur linken Bildlaufansicht hinzufügen, aber wenn der Benutzer dieses Objekt entfernt und zurückgibt zurück zum main (Mitte) bevorzugt fallen gelassen und im selben alten Index hinzugefügt, wenn das Objekt die Nummer 2 war, dann wird das Objekt hinzugefügt und um den Index 2 ..etc fallengelassen.Drag/Drop zwischen 3 ScrollViews [iOS]

Konnten Sie uns bei dieser Funktion helfen?

+0

ja, kann dies für einen Moment solved.wait werden, habe ich meine Idee in meinem Antworten. –

+0

@ezatu 丶 Ich warte auf Ihre freundliche Unterstützung – SimpleojbC

Antwort

1

Nennen wir die Artikel 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; 

Sie brauchen eine Modellklasse machen wie ItemModel vererben UIView oder NSObject, in ItemModel.h eine Eigenschaft machen (welche Eigenschaft Sie brauchen, und eine Eigenschaft, über die UIScrollView dieses Modell enthält)

Erstens stellen alle Modelle Zeigen Sie in der Datenquelle der Hauptansicht mainArray Modelle in Ihrem self.view an und rufen Sie self.view bringSubviewToFront: an und geben Sie allen Modellen eine UIPanGestureRecognizer und eine Methode, um auf UIPanGestureRecognizer zu reagieren, so dass Sie sie ziehen können.

Dies ist der wichtigste Teil:

Weil Sie wollen, dass alle Modelle von drei UIViews enthalten sein, können Sie die Modelle Rahmen zwischen self.view.frame und die drei UIView Frames Beziehung berechnen müssen. Tatsächlich sind alle ModelViews in self.view enthalten, aber wenn sie visuell angezeigt werden, sind alle ModelViews in UIScrollViews enthalten.

Zweitens haben Sie bereits den Rahmen von drei UIView, wenn Sie Modell ziehen Sie CGPoint über die Lage des Schlepp bekommen können, dann rufen Sie die Methode CGRectContainsPoint(CGRect rect, CGPoint point), also können Sie jede Ansicht bekommen, die den Punkt enthält, die Sie ziehen.

Für exexample Ziehen Sie model1mainView-leftView Sie eine YES von CGRectContainsPoint(leftview.frame, point) bekommen können, dann nehmen Sie die model1 von mainArray und setzen model1 in leftArray, mittlerweile müssen Sie erneut das Layout der drei UIViews.

enter image description here

enter image description here

enter image description here

hier meinen Anteil URL für die gif ist: https://pan.baidu.com/s/1slFBva9

+0

Ich schlage vor, dass Sie eine Modellklasse "UIView" erben, weil Sie das Modell zustimmen müssen, anzuzeigen und zu ziehen. –

+0

Schätzen. aber das war meine Idee und das Problem ist, wenn das Objekt addSubview in der mittleren scrollview nicht außerhalb der mittleren scrollview ziehen kann, also was könnten wir dafür tun? – SimpleojbC

+0

Entschuldigung, ich vergesse dieses Problem, ich werde meine Antwort ändern, Sie können sehen, wie ich dieses Problem gelöst habe. –