2009-12-08 16 views
10

Ho una bella interfaccia utente pulita in una vista tabella che ha alcuni campi di testo che l'utente deve compilare. Uno dei campi è per il compleanno dell'utente.Come posso mostrare un UIDatePicker invece di una tastiera quando un utente seleziona un UITextField?

Mi piacerebbe averlo in modo tale che quando l'utente seleziona il campo di compleanno, una vista contenente un UIDatePicker apparirebbe, proprio come fanno le diverse tastiere quando si seleziona un campo di testo.

Questo può essere fatto? Avrei dovuto evitare che il campo di testo fosse il primo a rispondere (per evitare di avere la tastiera in arrivo) e avrei dovuto animare la vista scorrendo verso l'alto se prima non avevi mostrato la tastiera.

Presentare la vista modalmente potrebbe essere un'opzione? Se sì, come dovrei fare per farlo? Dalla documentazione sembra che le visualizzazioni modali occupino ancora l'intero schermo, voglio solo usare i 216 pixel inferiori (altezza della tastiera e UIDatePicker).

Qualcuno ha qualche consiglio su come fare per fare questo?

risposta

5

Implementare ciò semplicemente animando una vista contenente il pulsante UIDatePicker, un Fatto e Annulla dalla parte inferiore dello schermo. Usando CoreAnimation, questo dovrebbe essere abbastanza facile.

+0

Come faccio a fare questo? Ho un controller di visualizzazione/vista progettato in IB, ma non so cosa fare dopo. Devo aggiungere la vista come sottoview alla vista attualmente visualizzata e quindi animarla in qualche modo? Non sono sicuro di come le visioni degli utenti si riferiscono ai CALayer per l'animazione. –

+1

Non importa. Sono stato in grado di capirlo. Aggiungo la vista che contiene il selettore di date alla finestra e l'animazione utilizzando un blocco '[UIView beginAnimations]' –

+0

Ragazzi, vedere la soluzione Oded Bex Dov appena sotto. Finché stai codificando per iOS 3.2 o versioni successive, puoi far animare la struttura e gestire i raccoglitori per te insieme alla tastiera. Sicuramente il modo corretto di farlo. –

1

Perché si sta utilizzando un campo di testo se non si desidera accettare l'input dell'utente da una tastiera? Utilizzare invece una sottoclasse UILabel (in cui si ignorano i touchBegan/Ended: withEvent: set di metodi per mostrare UIDatePicker) o un UIButton (dove l'azione è un metodo che fa scorrere l'UIDatePicker).

32

Vecchia domanda ma il modo corretto per farlo in questi giorni sarebbe impostare l'inputView di UITextField su un selettore creato da qualche parte. Qualcosa di simile a questo:

UIPickerView *myPicker = [[UIPickerView alloc] init]; 
// set picker frame, options, etc... 
// N.B. origin for the picker's frame should be 0,0 

[myTextField setInputView:myPicker]; 

Quando si va a modificare un UITextField, iOS in realtà solo visualizza qualunque punto di vista è in textField.inputView che per impostazione predefinita è la tastiera, si può rendere tutto quello che vogliono, basta che sia una sottoclasse di UIView .

+3

Questa risposta deve essere accettata al posto della soluzione "Animazione UIView". Grazie – klefevre

Problemi correlati