Tip iOS #35 – Limitare la lunghezza di un UITextField

iOSBuongiorno a tutti,

man mano che si sviluppano applicazioni sempre più complesse ci si trova spesso a che fare con gli input dell’utente; in particolar modo nascono gli ostacoli relativi al filtraggio di tali input, soprattutto se legati all’immissione da tastiera da parte dell’utente stesso.

Una delle difficoltà più comuni è legata al limitare del numero di caratteri inseribili per un determinato UITextField da parte dell’utente.

Difatti, tra le molteplici proprietà disponibili, ne manca una che indichi il numero massimo di caratteri che il campo deve contenere.

Nonostante ci si stupisca della mancanza, fortunatamente l’ostacolo è facilmente sormontabile. Si ricorre al metodo del UITextFieldDelegate:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

Questo metodo permette di valutare sia i caratteri inseriti da tastiera che quelli inseriti tramite taglia incolla. Lo sviluppo del metodo è quindi il seguente:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return (newLength > 50) ? NO : YES;
}

In questo caso si controlla che il testo abbia lunghezza minore o uguale di 50 caratterti, in caso affermativo si restituisce YES ed il nuovo testo viene inserito nel campo, altrimenti, rispondendo NO, non vi è l’accodamento/sostituzione.

Per far si che il metodo venga richiamato dal textfield interessato bisogna aggiungere il protocollo UITextFieldDelegate al ViewController che gestisce il textfield e bisogna assegnare alla proprietà delegate di quest’ultimo il puntatore al ViewController interessato. Senza questo passaggio il metodo esposto non verrà mai richiamato.

Arrivederi al prossimo suggerimento,

Roberto S.



Related Posts Plugin for WordPress, Blogger...

Questa voce è stata pubblicata in iOS Tips e contrassegnata con , , , , , , , . Contrassegna il permalink.
Wordpress Code Snippet by Allan Collins