una delle problematiche che più frequentemente si affrontano quando si accettano input da tastiera, nelle applicazioni iOS, riguardano la possibilità di filtrare i caratteri inseriti dagli utenti.
Se è pur vero che possiamo impostare la tastiera di default che viene presentata all’utente, è anche vero che, spesso, queste tastiere contengono caratteri indesiderati inoltre l’utente può avere la facoltà di passare ad un’altra tastiera.
Per assicurarsi che i dati inseriti siano qundi quelli giusti, è preferibile aggiungere un filtro che lasci passare solo le informazioni desiderate, anche in caso di copia ed incolla.
Nell’esempio seguente aggiungeremo un filtro che permette l’inserimento all’interno di un UITextField esclusivamente di dati numerici.
Il primo passo da compiere è aggiungere al nostro controller il protocollo UITextFieldDelegate.
supponendo di avere una proprietà denominata mioTestoNumerico tramite l’Interface Builder intregato in XCode indichiamo il delegate del campo come il nostro ViewController o da codice, ad esempio nella viewDidLoad, aggiungiemo la seguente riga:
mioTestiNumerico.delegate = self;
A questo punto implementiamo il seguente metodo:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
BOOL ret = YES;
NSCharacterSet *valuesCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *purifiedString = [string stringByTrimmingCharactersInSet:[valuesCharacterSet invertedSet]];
if ([purifiedString isEqualToString:string])
ret = YES;
else
ret = NO;
return ret;
}
Da questo momento gli unici caratteri accentati saranno quelli numerici indicati oltre, ovviamente, ai caratteri di backspace e cancel.
Arrivederci al prossimo suggerimento,
Roberto S.




