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 回答