【问题标题】:Iphone should block 0 number in the keyboardiPhone应该在键盘上屏蔽0号
【发布时间】:2014-01-25 05:48:21
【问题描述】:

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

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

【问题讨论】:

  • ...问题是什么?您尝试过吗?
  • 到目前为止您尝试过什么?您能否向我们展示代码以及您遇到问题的地方?

标签: iphone objective-c xcode keyboard


【解决方案1】:

首先你应该使用

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

【讨论】:

  • 感谢您的回答。
【解决方案2】:

试试下面的方法。

通过使用以下方法,用户无法在文本字段中输入 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;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2011-12-15
    • 2012-11-19
    • 2012-11-10
    • 2011-07-02
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多