2015-10-20 4 views
8

Sono un principiante nello sviluppo iOS. Stavo cercando di visualizzare un UIAlertController quando un tasto è scattato (Lo storyboard è vuoto, c'è solo 1 pulsante nella storyboard), utilizzando sottostante CodiceXCODE iphone 6 plus e 6s plus mostra un avviso quando viene visualizzato UIAlertViewController

@IBAction func showAlert(sender: UIBarButtonItem) { 
    let alert = UIAlertController(
    title: "Create new", 
    message: "Hi", 
    preferredStyle: UIAlertControllerStyle.Alert 
) 

    let createAction = UIAlertAction(title: "Ok", style: .Default, handler: nil) 
    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 

    alert.addAction(createAction) 
    alert.addAction(cancelAction) 
    alert.addTextFieldWithConfigurationHandler { 
    $0.placeholder = "Test placeholder" 
    } 

    presentViewController(alert, animated: true, completion: nil) 
} 

iphone 5, 5s, 6, 6s non mostrano gli avvertimenti, tuttavia iphone 6plus e 6s più spettacoli avvertimento

2015-10-20 22: 38: 54,007 TestApp [3128: 48601] il comportamento del UICollectionViewFlowLayout non è definito perché: 2015/10/20 22:38 : 54.008 TestApp [3128: 48601] l'altezza dell'articolo deve essere inferiore all'altezza di UICollectionView meno gli inserti della sezione superiore e in basso i valori , meno il contenuto inserisce i valori superiore e inferiore. 2015/10/20 22: 38: 54,008 TestApp [3128: 48601] Il pertinente esempio UICollectionViewFlowLayout è < _UIAlertControllerCollectionViewFlowLayout: 0x7fd6b8582d90>, ed è attaccato; layer =; contentOffset: {0, 0}; contentSize: {0, 0}> layout visualizzazione collezione: < _UIAlertControllerCollectionViewFlowLayout: 0x7fd6b8582d90>.

Se rimuovo il campo di testo su UIAlertController o rimuovo i 2 pulsanti (mantieni il campo di testo visualizzato), non mostra avvisi. Qualche spiegazione per cui questo accade? Come riparare l'avviso?

+0

Questo può essere stupido, ma prova ad aggiungere il campo di testo prima delle due azioni. – rmaddy

+1

@rmaddy mostra ancora l'avviso. Comunque ho appena provato ad aggiungere 2 campi di testo e non mostra avvisi su tutte le piattaforme, l'ho aggiunto prima e dopo le dichiarazioni di aggiunta delle 2 azioni ('Default' e' Annulla') –

+2

Invia un bug ad Apple. Includi una semplice app di test che mostri il problema. – rmaddy

risposta

18

prova:

yourAlertController.view.setNeedsLayout() 

poco prima di presentarla con presentViewController:

edit: ho presentato questo bug ad Apple

+1

Questo elimina l'avviso: dovremmo ancora inviare il bug a Apple poiché questa linea non dovrebbe essere necessaria. – Sidetalker

+1

@Sidetalker Fatto! –

+0

Lo ha fatto! Grazie :) – Sidetalker

0

Ho anche avuto lo stesso problema nel mio schermo solo per iphon6 più schermo. Si prega di verificare, se non sta passando titolo vuoto, se il titolo è vuoto, passare nil come:

UIAlertController *confirmAlert = [UIAlertController alertControllerWithTitle:nil message:displayMessage preferredStyle:UIAlertControllerStyleAlert]; 

invece di

UIAlertController *confirmAlert = [UIAlertController alertControllerWithTitle:@"" message:displayMessage preferredStyle:UIAlertControllerStyleAlert]; 

è risolto il mio problema. Buona fortuna ..