2011-09-16 17 views
7

Tutaj jest haczyk. Mam dwa widoki przewijania, jeden jest wypełniony 10 nieparzystymi podskładami, które są w zasadzie jak karty do gry (niestandardowe widoki klas). Chcę móc przeciągnąć i upuścić niektóre z tych widoków na pusty pasek przewijania, który mam.Przeciąganie i upuszczanie IOS między widokami przewijania

Pomiędzy tymi dwoma widokami przewijania istnieje wiele różnych widoków. Dlatego chcę pokazać, że widok jest faktycznie przeciągany z jednego widoku i umieszczany w innym widoku przewijania. Jak to osiągnąć.

Wiem, że muszę używać dotyku, ale jeśli ktokolwiek może wymyślić szybki przykład, będę wdzięczny. Dzięki.

+0

tak, przepraszam, że to rzeczywiście "iOS" :) – SeriousSam

+0

Nikt nie ma na to żadnej odpowiedzi ??? – SeriousSam

+0

Jestem zaskoczony, że nikt wcześniej nie spotkał się z takim wymogiem. – SeriousSam

Odpowiedz

7

Jest to bardzo łatwe. ScrollView jest jak każdy inny widok, więc zasadniczo przeciąga i upuszcza widok z jednego widoku do innego superview.

Twoja hierarchia wygląda następująco: Chcesz przeciągnąć i upuścić widok V z widoku A do widoku B. Oznacza to, że po uruchomieniu D & D, V jest podzbiorem A i po zakończeniu, V jest subview B. a i B muszą mieć wspólny Superview S.

kroki: 0/Twój dotyk rozpoznawania musi znajdować się na S, a nie na a lub B.

1/Użytkownik spustowych na V. You usuń go z A i dodaj do S na tej samej pozycji (UIView ma metody przekształcania pozycji z widoku na inny widok).
2/Użytkownik przeciąga V do B. Zmieniasz pozycję V w S.
3/Użytkownik upuszcza V. Jeśli jest wystarczająco blisko B, wstaw go do B (pozycja transformacji S-> B) i animuj różnicę między pozycjami . Jeśli jest jeszcze blisko A, należy go ożywić do A. Jeśli jest gdzieś pomiędzy A i B, możesz albo wstawić go do najbliższego, albo pozostawić tam i zablokować wszystkie inne interakcje użytkownika, aż użytkownik dotknie V ponownie i przeciągnie go do A lub B.

+0

Dzięki Sulthanowi zaimplementowałem już podobny fragment kodu. Po prostu zapomniałem zaktualizować status tutaj :) Ale jak zablokować wszystkie inne interakcje użytkownika i po prostu włączyć je na V? – SeriousSam

+0

Tylko jedno pytanie. Używam garści tych małych widoków i chciałem, aby w tym samym czasie współpracowałem tylko z jednym z nich. To nie powinno się zdarzać w przypadku wielu ciągnięć. Występują w IPAD. Jak rozwiązać ten problem ??? – SeriousSam

+0

Możliwość a/Przed rozpoczęciem przeciągania sprawdź, czy są już przeciągane widoki. b/Po prostu zablokuj wszystkie inne komponenty po rozpoczęciu przeciągania. – Sulthan

Powiązane problemy