"指定されたテキストを変更する必要があるかどうかデリゲートに尋ねます。" それにかんするtextField:shouldChangeCharactersInRange:replacementString:
私はUITextField
数字を除いて、0 を の最初の数字にしたくありません。UITextField
ユーザーが 0 を押した場合、それが最初の場所であれば表示されてはなりません。
変更されたイベントの編集を使用してその機能を実現できる場合、このメソッドの目的は何ですか?
"指定されたテキストを変更する必要があるかどうかデリゲートに尋ねます。" それにかんするtextField:shouldChangeCharactersInRange:replacementString:
私はUITextField
数字を除いて、0 を の最初の数字にしたくありません。UITextField
ユーザーが 0 を押した場合、それが最初の場所であれば表示されてはなりません。
変更されたイベントの編集を使用してその機能を実現できる場合、このメソッドの目的は何ですか?
これを試して、
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
if(newLength>1 && range.location==0 && [string isEqualToString:@"0"])
{
textField.text = [textField.text substringFromIndex:0];
return NO;
}
else
return (newLength == 1 && [string isEqualToString:@"0"]) ? NO : YES;
return YES;
}
これを使ってみてください...
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
/* for backspace */
if([string length]==0)
{
return YES;
}
/* limit to only numeric characters */
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i++)
{
if ([string isEqualToString:@"0"] && [textField.text length] == 0)
return NO;
else
{
unichar c = [string characterAtIndex:i];
if ([myCharSet characterIsMember:c])
return YES;
}
}
return NO;
}
この回答がお役に立てば幸いです...