2010-01-15 11 views
5

Mam UITextFields w tabeli, aby wprowadzić wartości. Niektóre z tych pól akceptują tylko cyfry. Używam UIKeyboardTypeNumbersAndPunctuation dla keyboardType i shouldChangeCharactersInRange do filtrowania znaków.Jak zapobiec zmianie klawiatury z cyfr na alfabet po naciśnięciu klawisza spacji?

Ponadto, wszystkie korekty są wyłączone:

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

Na polach liczbowych tylko, kiedy klawisz spacji dotknięciu zmienia klawiaturę do alfabetu. Wiem, że jest to domyślne zachowanie. Chcę zignorować klawisz spacji i nie chcę zmieniać typu klawiatury.

Czy istnieje sposób na zmianę tego domyślnego zachowania?

PS: inne typy klawiatury numerycznej nie są opcją. Potrzebuję interpunkcji!

Dzięki

Odpowiedz

4

Nie sądzę, że można zmienić zachowanie klawiatury.

Jednak można wdrożyć textField:shouldChangeCharactersInRange:replacementString: z protokołu UITextFieldDelegate przechwycić miejsca (i apostrof), jak to i wydaje się działać:

- (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; 
    } 
} 
Powiązane problemy