2014-09-10 11 views
14

Ho creato un'app semplice con due VC.
Apro il secondo VC dal primo pulsante. Seque è "Present Modally" e la transizione è "Partion Curl". Questo schema funziona bene su iOS7, ma su iOS8 prima la visualizzazione di VC scompare alla fine dell'animazione di arricciatura: enter image description hereTransizione di ricciolo parziale per modal seque in iOS 8

+0

Questo esiste ancora in iOS 10 (Xcode 8.3 beta). Cambiare la transizione a Flip Horizontal è stato il mio modo di liberarmene. –

risposta

10

Ho lo stesso problema. L'ho visto in Xcode 6 (beta 7) + iOS 8 (beta 5). Ancora presente nel seme GM di entrambi.

IOS 7.1 Particolarità:

è chiamato un "ricciolo parziale" e su iOS 7 visualizza come tale (ad esempio parziale - si può ancora vedere una porzione della vista origine lungo la parte superiore della finestra). Su iOS 7 - quando si tocca questa vista "originale" parzialmente esposta, la vista si apre nuovamente alla finestra completa dell'originale.

iOS 8 Specifiche:

La segue fa NON lasciare qualsiasi della proiezione originale. E qualsiasi tocco, ovunque sulla finestra/schermo, restituisce la vista di origine tramite uno svolgimento automatico. Se sulla vista è presente un UITextField, quando viene toccato per immettere un valore ... la vista di origine ritorna senza attivare alcun metodo UITextField associato. Nessuna tastiera è visualizzata, si svolge semplicemente alla vista di origine.

Mi sembra che la definizione del tocco associata a quello che dovrebbe essere un angolo parzialmente visualizzato della vista originale sia invece erroneamente definita come l'intera finestra.

Naturalmente, sono molto nuovo alla programmazione iOS, quindi la mia intuizione, se accurata, non mi dà la minima idea su come risolverlo! LOL Spero che qualcuno là fuori abbia le conoscenze per fornire almeno una soluzione alternativa utilizzabile.

Jim

P.S. Non ho ancora abbastanza punti reputazione da votare o commentare, quindi la mia risposta non è una risposta.

+0

"qualsiasi tocco, ovunque" solo nella metà superiore dello schermo (nel mio caso - su iPad mini retina) – djdance

3

Questo è un bug o (IMHO) un'indicazione da Apple che questo ModalTransitionStyle sta per essere deprecato. Poiché è probabilmente l'ultima traccia di pseudomorfismo, penso che sia una scommessa sicura che è l'abbreviazione di questo mondo. Stavo eseguendo il debug di un problema per ore per quanto riguarda i tocchi incoerenti su un viewcontroller presentato in modo modale, usando questa transizione e tirando fuori i capelli. Sono passato a un altro stile di transizione modale e POOF: tutti i problemi causati da iOS8 sono spariti.

Keith

+3

Apple non menziona affatto alcuna deprecazione degli effetti di arricciatura della pagina (parziale). Quindi è un Bug iOS 8 per me ;-) Questo fa davvero schifo. Esattamente la stessa build funziona perfettamente su iOS 7 ma non su 8 -.- – d4Rk

+1

Anche questo lo considero un bug, ma sfortunatamente non è stato aggiornato per un po 'di tempo e anche dopo diversi aggiornamenti a Xcode. Quindi, se si tratta di un "bug" di per sé, Apple sembra non essere a conoscenza, o non vuole correggerla per qualsiasi motivo. Sono curioso di sapere se questo problema è limitato agli storyboard o se invocare manualmente il seguito mostra anche il comportamento. Proverò a sperimentarlo quando ne avrò la possibilità, ma se qualcuno ha già e può confermare ...? – quickthyme

+1

Nevermind. Ho provato a invocare manualmente, oltre a provare a costruirlo al di fuori dello storyboard, che non funziona a meno che non intendi scrivere il tuo effetto di transizione (ad esempio, ignora "esegui"). Sembra che questo sconfigga il punto di usare il seguito in scatola in primo luogo. Immagino che per ora dobbiamo ricreare manualmente questo effetto o ridisegnare l'app per presentare il controller della vista di destinazione in un altro modo. Non sto vedendo un altro work-around in questo momento né alcuna spiegazione sul motivo per cui questo ora fallisce quando funzionava solo peachy. – quickthyme

-3

Anche io ho inseguito questo BUG per giorni! Risulta che è ancora possibile utilizzare Parzialmente arricciato con successo; il problema appare solo se la casella ANIMATI è spuntata. Deseleziona la scatola degli ANIMATI e sei a posto!

+0

Se lo fai, non hai più l'animazione di arricciatura. In modo che sconfigge l'intero punto. – user1427799

0

Ho avuto lo stesso problema. Toccando un punto qualsiasi nella metà superiore dello schermo, il modale si chiudeva (svolgendosi). Modificata l'animazione e il mondo era di nuovo in pace.

Quindi, sicuramente un bug in iOS8.

0

soluzione semplice per questo problema.

- (void)viewDidAppear:(BOOL)animated 
{ 

    [super viewDidAppear:animated]; 

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

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

      [self.view removeGestureRecognizer:gesture]; 

     } 

    } 

} 
0

è necessario trovare un superview, che contiene UIDismissCurlUpTapGestureRecognizer, della vista in cui si desidera disabilitare che riconoscitore gesto. Per exapmle nel mio caso:

po self.view.superview .superview .superview .gestureRecognizers

▿ opzionale> ▿ Alcuni: 2 elementi - [0]:???; target = < (action = handleNavigationTransition :, target = < UINavigationInteractiveTransition 0x15826e2e0>) >> - [1]: <UIDismissCurlUpTapGestureRecognizer: 0x15838a2c0; stato = possibile; vista =; target = < (action = _handleTapToDismissModalCurl :, target =) >>

Così ho rimosso che riconoscitore gesto, con questa parte di codice:

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) 
       } 

      } 
     } 
    } 

} 

Nota: è molto importante, che si esegue questa operazione in viewDidAppear, perché la vista non è a conoscenza delle sue anteprime precedenti nel ciclo di caricamento.

Problemi correlati