在我的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
中的一个而不限制另一个。
你能帮助我吗?
答案 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 && ... )
{ ... }