如何只阻止一个UITextField?

时间:2014-08-11 16:40:19

标签: ios uitextfield

在我的iOS应用中,我目前有2个UITextField名为 usernameTextField pINTextField 。由于两者中的一个必须具有4位数的长度,因此我使用此代码来限制 pINTextField 的长度。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (self.pINTextField.text.length >= 4 && range.length == 0)
    {
        return NO;
    }

    return YES;
}

奇怪的是,当用户在 pINTextField 中键入4位数时,此代码也会禁用 usernameTextField ,但我希望 usernameTextField 为" type-能够"即使在用户插入PIN码后也是如此。

换句话说:我只想限制两个UITextField中的一个而不限制另一个。

你能帮助我吗?

4 个答案:

答案 0 :(得分:2)

1)如果您还没有为文本字段定义IBoutlet,请创建它们。

2)然后,您可以按如下方式选择所需的文本字段:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range     replacementString:(NSString *)string
{
    if (self.pINTextField == textField)
    {
       if (textField.text.length >= 4 && range.length == 0)
       {
           return NO;
       }
    }

    return YES;
}

为此目的使用标签非常脆弱。有些人可能会在将来出现并修改笔尖中文本字段的标记,而不会意识到它与此行为有关。

答案 1 :(得分:0)

提供要阻止唯一标记的文本字段,并在if语句中检查它,如下所示:

if (textField.tag==666 && textField.text.length >= 4 && range.length == 0)
    {
        return NO;
    }

答案 2 :(得分:0)

检查发件人textField == self.pINTextField

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == self.pINTextField && self.pINTextField.text.length >= 4 && range.length == 0)
    {
        return NO;
    }
    return YES;
}

答案 3 :(得分:0)

您可以查看委托回调中获得的textField参数,以确定它是textField并根据该参数进行适当返回。 您似乎已经将这些文本字段指针作为属性,因此您可以执行以下操作:

if (textField == self.pINTextField && ... )
   { ... }