2010-07-16 8 views
8

Così ho aggiornato il codice all'ipad (cioè convertito in un'app universale). Tuttavia, il rendering di UIAlertview sembra essere disattivato per IOS4. Invece di essere posizionato nel mezzo, salta in alto e viene visualizzato in alto, con metà della casella tagliata. Lo stesso vale per l'orientamento orizzontale.iphone a ipad, iphone 4 problemi uialertview

È a mia conoscenza che UIalertview è sempre impostato nel mezzo? Ho guardato attraverso il codice e non ho impostato il frame/posizione in qualsiasi parte del codice. Questo accade solo per 4.0, sia su iphone 4 che su itouch in esecuzione 4.0. Ogni altra versione va bene, incluso l'ipad. qualche idea?

Grazie.

+0

come si presenta la tua creazione? hai un titolo e un contenuto o solo uno o l'altro? Ho visto la stessa cosa e ho dovuto comunque regolare il telaio, quindi hai provato a spostare il telaio? – AtomRiot

+0

In realtà sto eseguendo il debug di questo per qualcun altro. Con la creazione, intendi l'allocazione e l'inizializzazione? Penso che abbia sia un titolo che un contenuto. Ho guardato l'inizializzazione e non ho visto nessun utilizzo del frame. Controllerò di nuovo. Per curiosità, questo mostra solo su 4.0 e non sulle altre versioni per te e solo dopo l'aggiornamento a universale? – user396004

risposta

1

Sembra un bug. Ho anche avuto il problema su iPad con iOS 3.2.

Soluzione:

a) controllare la vostra condizione app: In iOS 4 basta usare

[UIApplication sharedApplication].applicationState 

più vecchio iOS: Conservare il tuo stato app manualmente:

-(void)applicationWillResignActive:(UIApplication *)application 
{ 
    self.appIsInBackground = YES; 
} 

-(void)applicationWillTerminate:(UIApplication *)application 
{ 
    self.appIsInBackground = YES; 
} 

-(void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    // Open your UIAlert here if self.appIsInBackground == YES; 

    self.appIsInBackground = NO; 
} 

b) aprire il UIAlert dopo che l'app è diventata attiva, come mostrato sopra nei commenti.

0

All'avviso sono stati aggiunti campi di testo?

Perché in 4.0+ iOS scorre la vista di avviso a parte visibile se si dispone di un campo di testo nella visualizzazione dell'avviso.

0

Ho lo stesso problema per iPad 3.2 quando l'applicazione si dimette attiva e in quel momento viene mostrato un avviso che l'avviso verrà mostrato nell'angolo in alto a sinistra. Così ho risolto usando il seguente codice nel metodo - (void) applicationDidBecomeActive: (UIApplication *) application

//Check that key window is alert view 
if ([[[UIApplication sharedApplication].keyWindow description] hasPrefix:@"<_UIAlertOverlayWindow"]) { 
    //Yes then check for subviews tht are alertViews 
    UIWindow *alertViewWindow = [UIApplication sharedApplication].keyWindow; 
    NSArray *subViews = [alertViewWindow subviews]; 
    for (UIView *subview in subViews) 
    { 
     if ([subview isKindOfClass:[UIAlertView class]]) 
     { 
      //Retain it 
      UIAlertView *alertView = (UIAlertView *)[subview retain]; 
      //Now dismiss it and then show it again 
      [alertView dismissWithClickedButtonIndex:0 animated:NO];//Here ClickedButtonIndex must be according to cancel button 
      //Show the alert view again 
      [alertView show]; 
      //Release previsous retained object 
      [alertView release]; 

     } 
    } 
}