好的,我在这里遇到了一个小问题。我想在我的UITextField中过滤两件事。它们包括限制字符数和过滤字符类型。我可以让每个人在那里自己工作,但他们都不能一起工作。它可能与双返回idk有关。希望有人可以查看我的代码,看看他们为什么不能一起工作。我为此打败了自己。谢谢您的帮助。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *svo;
svo = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:svo] componentsJoinedByString:@""];
BOOL bT = [string isEqualToString:filtered];
return bT;
if (myTextField.text.length >= MAX_LENGTH && range.length == 0)
{
return NO;
}
else
{
return YES;
}
}
答案 0 :(得分:2)
你的第一个“回归”总是会发生,因为你在这里无条件地叫“回归”。
我认为你打算写这个:
return bT || myTextField.text.length < MAX_LENGTH || range.length > 0;
基本上,用上面的内容替换你的'return bT'和'if'语句。 这基本上意味着您在以下情况下返回YES:
在所有其他情况下,您将返回NO。