希望有人可以对此有所了解.
我正在为一家公司开发应用程序,他们有一个自定义UITextField的搜索字段.目前,它使用输入的每个字母来优化搜索.
问题:他们有一个小弹出窗口,指示它正在搜索,每次按键时,你会看到它在屏幕上闪烁.显然,他们不想要这个.
我想做的虽然不确定如何,但不是在每个按键上完善搜索,而是在完成打字时进行搜索.但是,我也不想添加“搜索”按钮.我只是希望他们完成输入,一秒钟,延迟或其他什么,搜索发生.
有没有办法检测用户何时完成输入?有人这样做过吗?
提前致谢.
解决方法
您可以使用简单的NSTimer来完成此操作.在shouldChangeCharactersInRange中:检查计时器是否有效,如果是,使其无效,然后重新启动计时器.当最终大声敲响时间时,意味着用户没有在您指定的时间间隔内输入任何内容.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if (someTimer.isValid) { [someTimer invalidate]; } someTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timeToSearchForStuff:) userInfo:nil repeats:NO]; return YES; }
正如@Jai Govindani指出的那样,为了实现这个方法,你需要将你的控制器指定为你的UITextField的委托,并确保你的控制器符合UITextFieldDelegate协议.