ios - 如何只阻止一个 UITextField?

标签 ios uitextfield

在我的 iOS 应用程序中,我目前有 2 个名为 usernameTextFieldpINTextFieldUITextField。由于两者之一的长度必须为 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 甚至是“可键入的”用户输入 PIN 码后。

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

你能帮帮我吗?

最佳答案

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

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

关于ios - 如何只阻止一个 UITextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248213/

相关文章:

ios - 另一篇关于 MVC 责任的帖子,谁应该知道什么?

ios - 是否可以在 sprite-kit 游戏中使用 Twitter/Facebook 分享按钮?

ios - 如何阻止文本字段中的文本重叠

ios - UICollectionViewFlowLayout 子类不起作用?

ios - swift 3.0,火力地堡 : How to get last added record

ios - Alljoyn 支持 iOS 吗

ios - 在 TabBarController 中的 View 之间传递数据

ios - iPhone - AlertView 文本字段使用 iOS6 进行切换

ios - UITextField 不显示键盘

ios - 'UIButton' 没有可见的@interface 声明选择器 'setTitle:'