2010-01-30 15 views
5

Ho controllato le altre risposte ma non ho trovato nulla che descriva veramente la mia situazione. Quindi ecco qui.il vecchio display passa-dopo-modal-view-controller problema

Ho un'app basata su finestra che crea e carica un UIViewController da xib. Ha barra di stato disabilitato, altezza di 480 e un UISegmentedControl con origine y di 451. Esso mostra bene nella parte inferiore dello schermo *

In viewDidLoad del UIViewController che crea un UIView initWithFrame:CGRectMake(0.0, 0.0, 320.0, 431.0)]; (che è 480 -. 29 pixel per UISegmentedControl e 20 per la barra di stato.) Lo aggiungo a UIViewController con [self.view addSubview:gameBoard];. Poi alcune parti di gioco di UIView sono aggiunte come sotto-visualizzazioni della UIView di gameboard e tutto viene visualizzato come penso che dovrebbe essere.

Quando alcune di quelle sottoview di UIView vengono toccate, dovrebbe apparire un menu. Ho creato un UIViewController con i controlli necessari su di esso. Io uso un metodo delegato per chiamare dalle subviews, che raccolgono gli eventi di attivazione, al UIViewController radice - che fa

self.squadOrders = [[SquadOrders alloc] initWithNibName:@"SquadOrders" bundle:nil]; 
    squadOrders.viewControllerDelegate = self; 
    [self presentModalViewController:squadOrders animated:YES]; 

E i display di dialogo modale come penso che dovrebbe, scivolando dal bordo inferiore del lo schermo, che non copre la barra di stato ma copre UISegmentedControl menzionato nella parte inferiore della radice UIViewController. Viene scartato da

[self dismissModalViewControllerAnimated:YES]; 

ed è qui che iniziano i problemi. Il controllo UISegmented viene spostato verso il basso di 20 pixel in modo che solo 9 pixel siano visibili nella parte inferiore dello schermo. C'è uno spazio bianco di 20 pixel nella parte superiore in cui la vista è stata spostata verso il basso.

* abilitando la barra di stato su questo o qualsiasi altro xib non cambia affatto il comportamento descritto.

Altre domande StackOverflow correlati sono:

IPhone - After dismissing Modal View Controller - gap is left at top of page - ma la soluzione data era non avere un altro controller di vista caricato come una visualizzazione secondaria del controller della vista che visualizza il modal - ma non lo faccio, solo UIViews. C'è anche il suggerimento di reimpostare il fotogramma appropriato dopo che il modale scompare, ma sembra un imbroglio.

Contents of UIScrollView shifted after dismissing ModalViewController - Ho giocato con le altezze di tutti i punti di vista e controller - sono sicuro che corrispondono, non ha aiutato. Di nuovo, il frame può essere resettato ma si rivolge solo al sintomo.

Ce ne sono altri, ma finora non è stato risolto nulla.

+0

guardando a self.view.fotogramma immediatamente prima della visualizzazione del modale, è 0,0,320,480. Quando il modale viene rimosso diventa 0,20,320,460. Spero possa aiutare. –

+0

Non posso credere che non ci sia soluzione. – ZaBlanc

risposta

0

Ho appena risolto questo problema con lo spostamento della vista verso il basso. Era a causa di navigationBar.barStyle impostato su UIBarStyleBlackTranslucent.

0

Questo è un trucco, ma potrebbe aiutare qualcuno. Avevo molti di questi 20 gap gap nella mia app e tutti se ne sono andati usando un controller di navigazione come controller della vista principale. In realtà non lo uso come controller nav (e nascondo la barra di navigazione), quindi questa soluzione può funzionare nella maggior parte delle app.

Fondamentalmente, ho un BaseView (320 x 480, nessuna barra di stato) il cui controller si trova nel mio controller nav, e quindi il resto della mia app viene aggiunto come subviews a BaseView. Funziona tutto alla grande ora.

Problemi correlati