我有一个UITextField,下面有一个表格,显示了一个可供选择的项目列表(类似于下拉列表)。现在例如当我在文本字段中输入2(文本字段具有年份值)时,该表将显示所有字符串,其中2为子字符串。因此,当我输入2000时,它只会在表格中显示匹配的字符串2000。
现在,当我在文本字段中输入2000时,我想调用一个方法。一切正常,但我想只在我输入所有4位数字时才调用此方法,但是当我尝试输入第4位数字时调用该方法。
如何在2000年输入的地方执行此操作,并在输入第3个零后,在shouldChangeCharactersInRange返回Yes后调用该方法。
这是我的代码:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *substring = [NSString stringWithString:textField.text];
substring = [substring stringByReplacingCharactersInRange:range withString:string];
//if _filteredarray count==1 and substring and _filteredarray object at index 0 matches then call a method here
return YES;
}
答案 0 :(得分:3)
试试这个
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *substring = [NSString stringWithString:textField.text];
substring = [substring stringByReplacingCharactersInRange:range withString:string];
if(substring.length == 4)
{
[textField resignFirstresponder];
[self performSelector:@selector(functiontocall)withObject:nil afterDelay:0.8];
}
return YES;
}
上面的代码可能会给你一个想法
如果你输入2000的第四个字母,那么键盘将会消失(如果你想要你可以添加它,这将避免进一步输入值到文本字段),那么你可以看到第三个零点0.8秒和你需要的功能打电话会被叫。