2010-01-26 13 views
17

Come disabilitare o nascondere AM/PM in UIDatePicker dal builder codice/interfaccia?Come disabilitare AM/PM in UIDatePicker

Desidero avere una modalità di selezione orari di 24 ore in UIDatePicker. Si prega di aiutare

+0

Come risposta qui http://stackoverflow.com/questions/1151335/can-i-localize-a-uidatepicker/2265984#2265984 e qui http://stackoverflow.com/questions/2894161/uidatepicker-problem-localizing/2918507 2918507, il display del selettore dipende dalle impostazioni del Paese, non dalle impostazioni della lingua. Nell'esempio si modifica solo la lingua locale. –

+0

Per iOS 6 è possibile vedere la mia risposta http://stackoverflow.com/a/12975871/1376032 – FunkyKat

risposta

6

AFAIK non è possibile (entro i limiti di SDK). L'AP/PM scompare se l'utente sceglie di utilizzare il formato 24 ore. Crea il tuo UIPickerView nel caso questo sia importante.

10

In base alla documentazione, dovrebbe essere possibile impostare la proprietà locale di UIDatePicker in un'impostazione internazionale che utilizza un formato di 24 ore.

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"da_DK"]; 
[datePicker setLocale:locale]; 
[locale release]; 

Purtroppo c'è un bug che causa sia simulatore e dispositivo di continuare a impaginare il selettore data in base alle preferenze degli utenti internazionali.

Come suggerisci, devi rotolare il selettore di date vinto per poter visualizzare un raccoglitore di 24 ore.

+1

Ho provato en_GB e dk_DK locale non funziona nel simulatore né nel dispositivo. Ma ho notato che se si imposta il formato 24 ore nelle impostazioni iphone, UIDatepicker visualizza 24 ore. Quindi dovrei creare il mio UIPickerView o c'è un modo per ottenere questo? –

+0

Ho sbagliato nella mia risposta originale (ora aggiornata) né il dispositivo né il simulatore funziona. Una segnalazione di bug è stata archiviata con Apple. Per ora mi piacerebbe fare come suggerisci: tira il tuo. –

+0

Non è un bug, stai solo cambiando una lingua, mentre in realtà dipende dalle impostazioni del Paese. –

-3

Ciò elimina la AM/PM dal selettore ...

UIDatePicker *myDatePicker = [[UIDatePicker alloc]init]; 
[myDatePicker setDatePickerMode:UIDatePickerModeDate]; 
+4

Rimuove anche il tempo! Non penso che sia ciò che è richiesto. – jrturton

1

l'AM/PM è collegata con le impostazioni di localizzazione di iPhone. Puoi forzare la localizzazione del selettore a qualcosa che non ha AM/PM come ro_RO o nel caso tu lo voglia sempre con AM/PM puoi andare con en_US. Per le impostazioni questo è possibile farlo nel design sul lato destro sotto locale come l'inglese (Stati Uniti) o per Codice

[timePicker setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];

0

So che questo è vecchio ... ma stavo cercando in questo di recente e ho trovato questo attraverso alcuni test:

[datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_FR"]]; 

questo mi dice in sostanza che il "linguaggio" è l'inglese (il "en" parte) e "stile di tempo" è il francese (che è tempo di 24 ore di default) (la parte "FR"). Ho unito i due attraverso tentativi ed errori e ho scoperto che funzionava per quello che volevo, che era solo per avere un raccoglitore "Date and Time" che selezionasse anche in 24 ore (nessuna sezione AM/PM sul selettore, in inglese testo).

Il problema di questo è, quando si afferra la data qui, il locale potrebbe essere sbagliato ->

- (void)changeDate:(UIDatePicker *)sender { 

Quindi, fare questo per risolvere il locale nella parte relativa alla data di selezione cambiamento:

[sender setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_FR"]];