rever Inviato 26 Aprile 2013 Segnala Condividi Inviato 26 Aprile 2013 Come faccio a fare in modo che in una textField vengano inseriti soltanto numeri, ',' e '-'? In c# è semplice: private void txtCoefficienteA_KeyPress(object sender, KeyPressEventArgs e) { // la variabile ch contiene il codice del tasto premuto char ch = e.KeyChar; if (ch == 8)// il tasto BACKSPACE permette la cancellazione se si sbaglia l'inserimento return; if (char.IsDigit(ch) == false && ch != ',' && ch != '-') e.Handled = true;//scarto il carattere digitato if (ch == '-' && txtCoefficienteA.Text != "") e.Handled = true;//controllo che il carattere '-' sia digitato soltanto a textbox vuota if (ch == ',')//controllo che il carattere ',' sia digitato solo una volta { int i; for (i = 0; i < txtCoefficienteA.TextLength; i++) if (txtCoefficienteA.Text.Substring(i, 1) == ",") e.Handled = true; } } } in objective-c invece non riesco a fare il controllo sul rispettivo ascii del char, quindi ho provato così: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *sRisultante = [textField.text stringByReplacingCharactersInRange: range withString: string]; NSInteger holder; NSScanner *scan = [NSScanner scannerWithString: sRisultante]; return [scan scanInteger: &holder] && [scan isAtEnd]; } nel ViewController.m Però non mi lascia scrivere il meno e la virgola perchè non sono numeri. Link al commento Condividi su altri siti Altre opzioni di condivisione...
rever Inviato 28 Aprile 2013 Autore Segnala Condividi Inviato 28 Aprile 2013 nessuno sa come fare??? anche in altre maniere Link al commento Condividi su altri siti Altre opzioni di condivisione...
Sam88 Inviato 29 Aprile 2013 Segnala Condividi Inviato 29 Aprile 2013 Io userei le regular expressions per validare un input: http://developer.apple.com/library/ios/documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009708-CH1-SW48 Mobile & Web Developer | samuele@mr-apps.com | Mr.Apps Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 29 Aprile 2013 Segnala Condividi Inviato 29 Aprile 2013 Non basta sull'interfaccia settare la tastiera come numeric? É un po' che non programmo per iPhone, quindi magari esiste un modo per "bypassare" questa forzatura (magari con un paste? non ho mai provato..). Alternativamente per qualcosa di "complesso" usa regex come suggerito da Sam88, oppure NSScanner Link al commento Condividi su altri siti Altre opzioni di condivisione...
rever Inviato 29 Aprile 2013 Autore Segnala Condividi Inviato 29 Aprile 2013 quindi controllo l'input dopo e mando un messaggio di avviso se contenuto errato. Non ho capito come usare NSRegularExpression, devo dichiarare un istanza? NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:self.TxtCoefficenteA.text options:<#(NSRegularExpressionOptions)#> error:<#(NSError *__autoreleasing *)#>]; Io volevo riuscire ad ottenere il carattere del tasto premuto e decidere se scriverlo o no. Dello scan ho trovato il metodo IsEqual, ma non riesco a usarlo perchè confronta il mio scan con un oggetto di tipo id E come faccio a settare la tastiera come numeric? Link al commento Condividi su altri siti Altre opzioni di condivisione...
Sam88 Inviato 3 Maggio 2013 Segnala Condividi Inviato 3 Maggio 2013 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"-?[0-9]+(?:\,[0-9]*)?" options:NSRegularExpressionCaseInsensitive error:&error]; NSTextCheckingResult *match = [regex firstMatchInString:textField.text options:0 range:NSMakeRange(0, [string length])]; return match; } Questo pezzo di codice dovrebbe fare al caso tuo. le stringhe accettate per esempio saranno: 123 123,45 -123 Se non è proprio ciò che volevi ottenere modifica la regular expression. Un tool molto utile online per validare le regular expressions è questo. Per quanto riguarda la visualizzazione della tastiera UITextField ha la proprietà keyboardType. Settando questa proprietà cambia la visualizzazione della tastiera per quel textfield. Mobile & Web Developer | samuele@mr-apps.com | Mr.Apps Link al commento Condividi su altri siti Altre opzioni di condivisione...
rever Inviato 5 Maggio 2013 Autore Segnala Condividi Inviato 5 Maggio 2013 si blocca sul return perchè vuole un bool. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Sam88 Inviato 7 Maggio 2013 Segnala Condividi Inviato 7 Maggio 2013 Si, giusto. Basta sostituire questo: return match; con questo controllo: return match.range!=NSNotFound; Mobile & Web Developer | samuele@mr-apps.com | Mr.Apps Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.