1

UITextFieldDelegate プロトコル参照言う

"指定されたテキストを変更する必要があるかどうかデリゲートに尋ねます。" それにかんするtextField:shouldChangeCharactersInRange:replacementString:

私はUITextField数字を除いて、0 を の最初の数字にしたくありません。UITextFieldユーザーが 0 を押した場合、それが最初の場所であれば表示されてはなりません。

変更されたイベントの編集を使用してその機能を実現できる場合、このメソッドの目的は何ですか?

4

2 に答える 2

2

これを試して、

- (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;  
}
于 2013-07-19T06:04:50.720 に答える
1

これを使ってみてください...

   -(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;
}

この回答がお役に立てば幸いです...

于 2013-07-19T06:17:11.147 に答える