2014-09-10 9 views
14

Stworzyłem prostą aplikację z dwoma wirtualnymi kamerami.
Otwieram drugi VC od pierwszego przycisku. Seque ma "Present Modally", a przejście to "Partion Curl". Ten schemat działa dobrze na iOS7, ale na iOS8 pierwszy widok VC znika na końcu animacji: enter image description herePrzejście częściowe zwojów dla modalnej sekwencji w iOS 8

+0

To nadal istnieje w iOS 10 (beta 8.3 beta). Zmiana przejścia na Flip Horizontal była moim sposobem na pozbycie się tego. –

Odpowiedz

10

Mam ten sam problem. Widziałem to w Xcode 6 (beta 7) + iOS 8 (beta 5). Nadal obecne w nasionach GM obu.

iOS 7.1 Dodatkowo:

nazywany jest „częściowe zwijanie”, a na iOS 7 wyświetla jako takie (np Częściowa - nadal można zobaczyć część widoku pochodzącego wzdłuż górnej części okna). W systemie iOS 7 - po dotknięciu tego częściowo odsłoniętego widoku "oryginalnego" widok cofa się do pełnego okna oryginału.

iOS 8 Dodatkowo:

segue ma NIE opuścić jakikolwiek oryginalnego pokazano. I każde dotknięcie, w dowolnym miejscu na oknie/ekranie, zwraca widok początkowy za pomocą automatycznego rozwijania. Jeśli masz UITextField na widoku, po dotknięciu go, aby wprowadzić wartość ... pierwotny widok zwraca bez wyzwalania żadnej z powiązanych metod UITextField. Żadna klawiatura nie jest wyświetlana, po prostu rozwija się do widoku początkowego.

Wydaje mi się, że definicja dotyku powiązana z tym, co powinno być częściowo wyświetlanym rogiem oryginalnego widoku, jest błędnie zdefiniowana jako całe okno.

Oczywiście, jestem bardzo nowy w programowaniu na iOS, więc mój wgląd, jeśli jest dokładny, nie daje mi wskazówki, jak go obejść! LOL Mam nadzieję, że ktoś tam będzie miał wiedzę, aby przynajmniej zapewnić użyteczne obejście.

Jim

P.S. Nie mam jeszcze dość punktów reputacyjnych, aby głosować lub komentować, stąd moja odpowiedź, która nie jest odpowiedzią.

+0

"dowolne dotknięcie, w dowolnym miejscu" tylko w górnej połowie ekranu (w moim przypadku - na iPadzie mini siatkówce) – djdance

3

Jest to albo błąd, albo (IMHO) wskazówka od Apple, że ten ModalTransitionStyle ma zostać wycofany. Ponieważ jest to prawdopodobnie ostatni ślad pseudomorfizmu, myślę, że jest to bezpieczny zakład, że jest on krótki dla tego świata. Debugowałem problem przez wiele godzin w związku z niespójnymi dotknięciami modalnie prezentowanego kontrolera widoku, używając tego przejścia i wyciągając moje włosy. Przełączyłem się na inny styl przejściowy i POOF - zniknęły wszystkie problemy spowodowane przez iOS8.

Keith

+3

Apple w ogóle nie wspomina żadnych wycofań (częściowych) efektów zwijania strony. Jest to dla mnie błąd iOS 8 ;-) To naprawdę jest do bani. Dokładnie ta sama kompilacja działa doskonale na iOS 7, ale nie na 8 -.- – d4Rk

+1

Uważam, że jest to również błąd, ale niestety odszedł nieskadresowany przez jakiś czas, a nawet po kilku aktualizacjach do Xcode. Więc jeśli jest to "błąd" per se, Apple wydaje się być albo nieświadomy, albo nie chce go poprawić z jakiegokolwiek powodu. Ciekawy jestem, czy ten problem ogranicza się do scenorysów, czy też ręczne wywoływanie ruchu pokazuje również to zachowanie. Spróbuję z nim eksperymentować, gdy dostanę szansę, ale jeśli ktoś już to ma i może potwierdzić ...? – quickthyme

+1

Nieważne. Próbowałem wywoływać ręcznie, jak również próbowałem konstruować je poza scenorysami, co nie działa, chyba że masz zamiar napisać swój własny efekt przejścia (tj. Przesłonić "wykonuj"). Wygląda na to, że w pierwszej kolejności nie uda się wykorzystać segregacji w puszkach. Na razie musimy albo odtworzyć ten efekt ręcznie, albo przeprojektować aplikację, aby przedstawić docelowy kontroler widoku w inny sposób. W tej chwili nie widzę innego obejścia, ani żadnych wyjaśnień, dlaczego teraz to się nie udaje, gdy pracowało się po prostu brzoskwiniowo. – quickthyme

-3

Ja też ścigałem ten BŁD przez kilka dni! Okazuje się, że możesz z powodzeniem używać Partial Curl; problem pojawia się tylko wtedy, gdy pole ANIMATES jest zaznaczone. Usuń zaznaczenie pola ANIMATES i jesteś gotowy do pracy!

+0

Jeśli to zrobisz, po prostu nie będziesz już miał animacji curlingu. To pokonuje cały punkt. – user1427799

0

Miałem ten sam problem. Dotknięcie dowolnego miejsca w górnej połowie ekranu spowodowało zamknięcie (odroczenie) modalu. Zmieniono animację i świat znów był spokojny.

Z pewnością błąd w iOS8.

0

proste rozwiązanie tego problemu.

- (void)viewDidAppear:(BOOL)animated 
{ 

    [super viewDidAppear:animated]; 

    for(UIGestureRecognizer *gesture in [self.view gestureRecognizers]) 
    { 

     if([gesture isKindOfClass:[UIGestureRecognizer class]]) 
     { 

      [self.view removeGestureRecognizer:gesture]; 

     } 

    } 

} 
0

Trzeba znaleźć Superview, który zawiera UIDismissCurlUpTapGestureRecognizer, od widoku, w którym chcesz wyłączyć ten gest rozpoznawania. Dla exapmle w moim przypadku:

PO self.view.superview .superview .superview .gestureRecognizers

▿ Opcjonalnie> ▿ Niektórzy: 2 elementy - [0]:?; docelowa = < (działanie = cel handleNavigationTransition :, = < UINavigationInteractiveTransition 0x15826e2e0>) >> - [1]: <UIDismissCurlUpTapGestureRecognizer: 0x15838a2c0; stan = Możliwe; view =; target = < (action = _handleTapToDismissModalCurl :, target =) >>

Więc usunąłem ten gest rozpoznawania, z tej części kodu:

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    if (self.view.superview?.superview?.superview != nil){ 
     if (self.view.superview!.superview!.superview!.gestureRecognizers != nil){ 
      for gestureRecognizer in self.view.superview!.superview!.superview!.gestureRecognizers!{ 
       if (gestureRecognizer.isKindOfClass(UITapGestureRecognizer)){ 
        self.view.superview!.superview!.superview!.removeGestureRecognizer(gestureRecognizer) 
       } 

      } 
     } 
    } 

} 

Uwaga: bardzo ważne jest, że można to zrobić w viewDidAppear, ponieważ widok nie jest świadomy swoich superopisów wcześniej w cyklu ładowania.