Tutorial 022 - Screenshot Iniziamo questo tutorial ringraziando gli amici di iCodeBlog i quali ci hanno gentilmente concesso la traduzione su devAPP.it dei loro interessantissimi Tutorial. Da oggi, quindi, oltre a gustarvi i tutorial dei nostri autori, avrete modo di imparare qualcosa di nuovo anche grazie ai tutorial di iCodeBlog. Inauguriamo questa nuova collaborazione con un tutorial di AppStoreMod che ci mostra come inserire un UITextField all’interno di un UIAlertView. Tutorial molto semplice quindi, ce la caveremo con poche righe di codice. Imparerete ad usare CGAffineTransorm e a creare un UITextField via codice.

Qui a sinistra e in basso due screenshots che mostrano il risultato che vogliamo ottenere:



Non perdiamoci in chiacchere e iniziamo subito con il nostro tutorial..

1. Creiamo un nuovo progetto “View Based Application”

Potete chiamarlo come meglio preferite, noi lo abbiamo chiamato “TextFieldInAlert”.

2. Implementiamo il codice

Aprite il file viewcontroller.m o se avete chiamato il progetto TextFieldInAlert come noi aprite TextFieldInAlert.m. Cercate al suo interno il metodo -(void)viewDidLoad e “scommentatelo”. Inserite quindi al suo interno il seguente codice:

- (void)viewDidLoad {
 
[super viewDidLoad];
 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter Name Here" message:@"this gets covered!"
 
delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"OK!", nil];
 
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];
 
[myTextField setBackgroundColor:[UIColor whiteColor]];
 
[alert addSubview:myTextField];
 
[alert show];
 
[alert release];
 
[myTextField release];
}

In questo modo non facciamo altro che creare semplicemente un UIAlertView di nome alert a cui aggiungiamo successivamente un UITextField di nome myTextField sottoforma di Subview, il tutto via codice.

Avrete sicuramente notato il messaggio”this gets covered!” (che viene poi nascosto dall’UITextField in fase di esecuzione del programma) inserito nell’UIAlertView, senza avremmo avuto dei problemi nella visualizzazione grafica con fastidiose sovrapposizioni degli elementi. Potete provare a togliere questa porzione di cocide e vedere cosa succede. Clicchiamo ora su “Build and Run” e proviamo l’applicazione. Come potete vedere abbiamo ora l’UITextField all’interno del nostro UIAlertView. Ora provate a toccare l’UITextField. Uh oh, perchè la tastiera copre l’UIAlertView? Ecco una semplice soluzione per sitemare questo inconveniente. Dobbiamo giusto aggiungere due linee di codice e avremo risolto questo problema. Aggiungete queste righe al vostro codice:

CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0, 60);
 
[alert setTransform:myTransform];

Il vostro codice al completo dovrebbe ora quindi essere questo:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Enter Name Here” message:@”this gets covered!” delegate:self cancelButtonTitle:@”Dismiss” otherButtonTitles:@”OK!”, nil];
 
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];
 
CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0, 60);
 
[alert setTransform:myTransform];
 
[myTextField setBackgroundColor:[UIColor whiteColor]];
 
[alert addSubview:myTextField];
 
[alert show];
 
[alert release];
 
[myTextField release];

Se cliccate su “Build and Run”, noterete ora che l’UITextField è leggermente più grande e quando toccherete l’UITextField, la tastiera non la coprerà più. Questo grazieproprio a CGAffineTransform.
Ancora grazie a iCodeBlog, alla prossima!