2016-05-19 11 views
0

Zuerst werde ich den Kontext so klar wie möglich vorstellen (wenn nötig, frage ich, ich kann einige Screenshots hinzufügen).Warum gehen meine Ansichten während des Ziehens hinter meine anderen Ansichten?

Ich arbeite tatsächlich an einer App, die viele Draggables-Ansichten verwalten soll (die PostIts genannt werden). Diese PostIts werden in einer anderen Ansicht gespeichert, die nicht ziehbar ist.

Um Bild, um es, wie es ist, wenn ich 2 entfernte Boxen mit vielen PostIts innen:

| * |     |* *| 
|* *| <- distance -> | * | 
|____|     |____| 

Mein Problem: wenn ich beginne eine PostIt in der Ansicht zu ziehen, die es tatsächlich sind enthalten, da es ist kein Problem. ABER, wenn ich versuche, außerhalb der eigentlichen Ansicht zu gehen, um zum anderen zu gehen (zum Beispiel), beginnt das PostIt zu verschwinden, wenn es auf den Rand der Ansicht trifft.

| * |     |* *| 
|* *--> disappearing.. | * | 
|____|     |____| 

mit meiner abgebildeten exemple Zurück:, die wie ist, wenn, wenn Sie eine PostIt in einer Box holen und es innen bewegen, es ist alles gut. Aber wenn du aus dem Kasten gehst, um zum anderen zu gehen, wird das PostIt unsichtbar , aber du hast es immer noch in deinen Händen weil, wenn du das unsichtbare PostIt in der anderen Box ablegst, erscheint es wieder (ich habe einige Methoden, die die neu laden Daten in einer Box in sort).

| * |     |* *| 
|* *--> disappearing --> * *| ..reappearing 
|____|     |____| 

Was ich versucht habe: Eigentlich bin ich ein paar Dinge mit dem Z-Index verwenden, aber das ist nicht wirklich concluant, ich habe viele Fehler habe: (dieser Code ist eigentlich in meinem UIPanGestureRecognizer)

if (recognizer.state == UIGestureRecognizerStateBegan) { 
    CGPoint begin; // Creating a point because you can't directly change the x and t attribute of a point, you have to change the whole point 
    begin = selectpostit.postItC.centerOfThePostit; 
    begin.x -= _collectionView.contentOffset.x; 
    begin.y -= _collectionView.contentOffset.y; 

    selectpostit.center = begin; 
}  
[self.view insertSubview:selectpostit aboveSubview:self.view]; 

Hier sind 10 andere versuchen, die nicht concluant war:

CGPoint tmpPoint = selectpostit.center; 
    [[UIApplication sharedApplication].keyWindow addSubview:selectpostit]; 
    selectpostit.center = tmpPoint; 
    self.view.layer.zPosition=1; 
    self.collectionView.layer.zPosition=1; 
    selectpostit.layer.zPosition = 1; 
    [self.view bringSubviewToFront:selectpostit]; 
    [_collectionView bringSubviewToFront:selectpostit]; 
    [selectpostit.superview bringSubviewToFront:selectpostit]; 
    [self.view insertSubview:selectpostit atIndex:1]; 

Vielleicht bin ich nicht gut mit diesen Methoden?

Meine Frage: ist nicht eine einfache Möglichkeit, eine Ansicht vor alle anderen Ansicht (absolut jeder alle anderen) zu setzen, wenn wir eine Dragndrop fängst (so mit einem UIPanGestureRecognizer)?

PS: Es sollte eine Menge Grammatikfehler drin sein, sorry, ich bin ein gebürtiger Franzose und das ist ein bisschen kompliziert, um mich ohne Fehler gut zu erklären, fühlen Sie sich frei, sie zu korrigieren, wenn Sie sie sehen.

+0

Stellen Sie sicher, dass die 'clipsToBounds'-Eigenschaft der PostIt-Containeransicht den Wert 'NO' hat. – fabe

+0

Ich werde das morgen überprüfen, wenn ich auf der Arbeit bin. Vielen Dank. – Kokodelo

+0

Ja, Sie hatten Recht, setzen Sie dies als Antwort, ich werde es akzeptieren. – Kokodelo

Antwort

1

Stellen Sie sicher, dass die clipsToBounds-Eigenschaft der PostIt-Containeransicht keinen Wert enthält.