Iphone应该在键盘上阻止0号码

时间:2014-01-07 13:55:09

标签: iphone objective-c xcode keyboard

我一直在用xcode编写iphone应用程序,有一个包含电话号码字段的表单。它必须包含10位数字。如果用户首先在键盘中按0,则应用程序不得写入。

例如,电话号码为05551234567,用户只能写5551234567.如果用户按0,则没有任何反应。

2 个答案:

答案 0 :(得分:9)

首先你应该使用

textView.keyboardType = UIKeyboardTypePhonePad

选择正确类型的键盘,这样您就可以只输入数字。

其次,您必须实现UITextViewDelegate,将其设置为文本视图委托并实现自定义

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

将检查您是否尝试在内容的开头插入0并在此情况下返回NO

如果您使用的是UITextField,那么一切都是一样的,唯一的区别就是您将使用UITextFieldDelegate并实施

- (BOOL)textField:(UITextField *)textField shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

答案 1 :(得分:1)

尝试以下方法。

通过使用以下方法,用户无法在文本字段中输入0

- (BOOL)textField:(UITextField *)TextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

        NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"123456789"];
        for (int i = 0; i < [string length]; i++)
        {
            unichar c = [string characterAtIndex:i];
            if (![myCharSet characterIsMember:c])
            {
                return NO;

            }
        }


    return YES;
}

如果您希望该用户不能仅在第一位输入0,请使用下面的方法

- (BOOL)textField:(UITextField *)TextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

        NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"123456789"];

    if ([TextField.text length]<=0)
    {
        for (int i = 0; i < [string length]; i++)
        {
            unichar c = [string characterAtIndex:i];
            if (![myCharSet characterIsMember:c])
            {
                return NO;

            }
        }
    }
    return YES;
}

我希望这会对你有所帮助。