2010-01-15 12 views
5

Değerleri girmek için bir tabloda UITextFields var. Bu alanlardan bazıları yalnızca sayıları kabul eder. Ben klavyeType için UIKeyboardTypeNumbersAndPunctuation ve karakterleri süzmek için shouldChangeCharactersInRange kullanıyorum. AyrıcaBoşluk tuşuna dokunduğunda klavyenin Alfabelerden harf değiştirmesini nasıl önleyebilirim?

, bütün düzeltmeler devre dışıdır: boşluk tuşuna dokunulduğunda yalnızca sayısal alanlar üzerinde

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

, alfabesine klavye değişir. Bunun varsayılan davranış olduğunu biliyorum. Alan anahtarını yok saymak ve klavye türünün değişmesini istemiyorum.

Bu varsayılan davranışı değiştirmenin bir yolu var mı?

PS: diğer sayısal klavye türleri bir seçenek değildir. Noktalama İşaretine ihtiyacım var!

Teşekkür

cevap

4

Ben klavye davranışını değiştirmek mümkün olduğunu düşünmüyorum.

Ancak, bu gibi uzayı (ve kesme işareti) yolunu kesmek için UITextFieldDelegate protokolünden textField:shouldChangeCharactersInRange:replacementString: uygulayabilir ve iş gibi görünüyor:

- (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; 
    } 
} 
İlgili konular