2010-01-15 7 views
5

Ho UITextFields su una tabella per immettere i valori. Alcuni di questi campi accettano solo numeri. Sto usando UIKeyboardTypeNumbersAndPunctuation per keyboardType e shouldChangeCharactersInRange per filtrare i caratteri.Come evitare che la tastiera cambi da Numeri ad Alfabeto quando si tocca la chiave dello spazio?

Inoltre, tutte le correzioni sono disattivati:

textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 

sull'unica campi numerici, quando la barra spaziatrice si tocca, i cambiamenti tastiera per Alphabet. So che questo è il comportamento predefinito. Voglio ignorare lo space key e non voglio che il tipo di tastiera cambi.

C'è un modo per modificare questo comportamento predefinito?

PS: gli altri tipi di tastiere numeriche non sono un'opzione. Ho bisogno della Punteggiatura!

Grazie

risposta

4

Non credo sia possibile modificare il comportamento della tastiera.

Tuttavia, si potrebbe implementare la textField:shouldChangeCharactersInRange:replacementString: dal protocollo UITextFieldDelegate per intercettare lo spazio (e l'apostrofo) come questo e sembra funzionare:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([string isEqualToString:@" "] || [string isEqualToString:@"'"]) { 
     NSMutableString *updatedString = [NSMutableString stringWithString:textField.text]; 
     [updatedString insertString:string atIndex:range.location]; 
     textField.text = updatedString; 
     return NO; 
    } else { 
     return YES; 
    } 
} 
Problemi correlati