ios – 在UITextField中输入后稍微延迟后执行操作

希望有人可以对此有所了解.

我正在为一家公司开发应用程序,他们有一个自定义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协议.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...