マイケルの答えを修正して、実装を少し簡単にしました。あなたのデリゲートがUITextfield
それ自体に設定されていることを確認してください。
yourTxtField.delegate = self;
さらに、このコードをコピーしてメイン ファイルに貼り付けます。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == yourTxtField) {
NSCharacterSet *numbersOnly = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSCharacterSet *characterSetFromTextField = [NSCharacterSet characterSetWithCharactersInString:string];
BOOL stringIsValid = [numbersOnly isSupersetOfSet:characterSetFromTextField];
return stringIsValid;
}else {
return YES;
}
}
スペースバーの使用を許可したい場合は、次のように の最後に空白を入れてCharactersInString
ください:
@"0123456789" -> @"0123456789 "
さらに:
文字列の長さを制限したい場合は、if 関数を次のように置き換えます。
if (textField == yourTxtField) {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"1234567890"] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return (([string isEqualToString:filtered])&&(newLength <= 10));
}
私の場合、最後の「10」は文字数制限を表しています。
乾杯!:)