2015-04-12 15 views
39

UIAlertController a due bottoni con stili impostati:iOS UIAlertController pulsante grassetto cambiato in 8.3

UIAlertActionStyle.Cancel 
UIAlertActionStyle.Default 

in iOS 8.2, il pulsante Annulla non è audace e di default è in grassetto. In iOS 8.3 di essere passato rotonda

Lo si può vedere proprie applicazioni di Apple per esempio, Impostazioni> Posta> Aggiungi account> iCloud> immettere i dati non validi, poi mostra come questo sul 8.3:

non supportato ID Apple

saperne di più (in grassetto) OK (non in grassetto)

mentre era il contrario per la 8.2.

Qualsiasi soluzione alternativa per rendere nuovamente come 8.2. Perché è cambiato?

risposta

58

Da iOS 9 è possibile impostare il valore preferredAction per l'azione in cui si desidera che il titolo del pulsante sia in grassetto.

let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 
    let OKAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
    alert.addAction(cancelAction) 
    alert.addAction(OKAction) 
    alert.preferredAction = OKAction 
    presentViewController(alert, animated: true) {} 

Il pulsante OK che si trova sulla destra sarà in carattere grassetto.

+0

Si noti che questo funziona solo con 'UIAlertControllerStyle.Alert' (non i fogli di azione). – Robert

1

ho appena controllato in iOS 8.2: un primo tasto aggiunto non è audace e un secondo pulsante di aggiunto è in grassetto. Con questo codice di un pulsante di annullamento sarà grassetto:

[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" 
                style:UIAlertActionStyleDefault 
                handler:nil]]; 
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" 
                style:UIAlertActionStyleCancel 
                handler:nil]]; 

E con questo codice di un pulsante di default sarà in grassetto:

[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" 
                style:UIAlertActionStyleCancel 
                handler:nil]]; 
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok" 
                style:UIAlertActionStyleDefault 
                handler:nil]]; 

non posso controllare in iOS 8.3 ora, ma questo comportamento può essere un ragionare.

+1

Grazie per l'idea. L'ho provato ma non fa differenza in 8.3. Penso che debba essere un bug di Apple perché sembra sbagliato nei loro avvisi. Ad esempio, l'avviso di notifiche push ora ha ** Non consentire ** (grassetto) OK (non in grassetto) che non è sicuramente quello che tutti vogliono ... – Bbx

+0

Deve essere un bug per gli avvisi di sistema, ma è possibile aggiungere i pulsanti (azioni) nella sequenza corretta per iOS 8.2 (8.3?) o impostare uno stile corretto per l'azione se lo stile dell'azione è una ragione di uno stile audace. –

+0

Ho provato su 8.4, lo stesso con @BBx l'ordine non fa differenza sembra .. – Bruce

11

Questa è una modifica intenzionale all'SDK. Ho appena avuto una risposta da Apple per this radar sulla questione, affermando che:

Si tratta di un cambiamento intenzionale - il pulsante di annullamento deve essere in grassetto negli avvisi.

Non riesco a trovare nulla nei vari registri delle modifiche che lo menzionano, sfortunatamente.

Quindi, dovremo apportare modifiche alle nostre app in luoghi per rendere alcune cose sensate.

Problemi correlati