Uno degli elementi del framework UIKit più utilizzati e che permette la massima interazione con l’utente è l’elemento UITextField. Questo elemento è il classico campo di testo che, se cliccato, farà apparire sul display una tastiera virtuale per permettere all’utente di poter immettere del testo. Data la sua importanza in ogni applicazione è opportuno fornire al lettore la lista degli attributi modificabili per personalizzare questo elemento grafico in maniera corretta:
- text: indica il testo che verrà inserito dall’utente all’interno dell’area di testo.
- placeholder: indica il testo che è possibile inserire all’interno dell’area di testo per fornire all’utente delle indicazioni più precise sul contenuto che dovrà inserire. Per esempio, in un gioco, potremo inserire come placeholder il seguente testo: "Inserisci il tuo nickName".
- textColor: banalmente indica il colore che vogliamo associare alla scritta inserita dall’uetente.
- font: indica il font che verrà utilizzato all’interno dell’area di testo.
- background: indica lo sfondo che avrà l’area di testo. Questo parametro è molto importante se si vuole effettuare una customizzazione dell’area di testo, inserendo come sfondo un’immagine creata ad-hoc. Inserendo come sfondo un’immagine, potremo ottenere un risultato grafico notevole.
- borderStyle: indica lo stile del bordo dell’area di testo. Di default questo valore è settato al valore UITextBorderStyleNone.
Abbiamo detto che quando l’utente tocca l’area di testo apparirà automaticamente una tastiera virtuale. Purtroppo, però, una volta inserito il testo e cliccato sul tasto return la tastiera non scomparirà in maniera automatica ma dovremo impostare tale comportamento via codice. A questo punto, dunque, facciamo qualche esempio per prendere un po’ di confidenza con questo nuovo elemento.
Apriamo un nuovo progetto View-based application e inseriamo, nel file header del ViewController, il seguente codice:
@interface EsempioText : UIViewController {
IBOutlet UITextField *testo;
}
@property(nonatomic,retain) IBOutlet UITextField *testo;
@end
Apriamo adesso il file .xib relativo al ViewController ed inseriamo, con Interface Builder, una elemento UITextField. Fatto ciò effettuiamo il collegamento opportuno utilizzando il File’s Owner. A questo punto, torniamo su Xcode, e posizioniamoci nel metodo viewDidLoad del file di implementazione del ViewController inserendo il seguente codice:
[testo setPlaceholder:@"Inserisci qui il tuo testo"];
[testo setFont:[UIFont fontWithName:@"Arial" size:30]];
[testo setBorderStyle:UITextBorderStyleLine];
[testo setBackground:@"immagine_sfondo.png"];
Come vediamo l’area di testo presenterà le caratteristiche settate tramite il codice sorgente ma, come anticipato, quando clicchiamo il tasto return sulla tastiera quest’ultima rimane visibile a schermo. Per poterla chiudere è necessario associare un delegato alla casella di testo nella stessa maniera in cui avevamo associato un delegato alla alert.
Creiamo, quindi, un nuovo file Objective-C Class e nel file header andiamo ad inserire il seguente codice:
@interface delegatoText : NSObject <UITextFieldDelegate> {
}
@end
e nel file di implementazione inseriamo il metodo textFieldShouldReturn: che ci permetterà di gestire la pressione sul tasto return:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
Il metodo resignFirstResponder chiuderà la tastiera non appena l’utente avrà cliccato sul tasto return.
A questo punto non ci resta che associare il delegato alla nostra casella di testo e per far ciò spostiamoci nuovamente nel file di implementazione del ViewController, importiamo il file delegatoText.h ed aggiungiamo, nel metodo viewDidLoad, queste due linee di codice:
delegatoText * delegato = [[delegatoText alloc]init];
testo.delegate = delegato;