我希望在用户停止输入时不执行键盘操作以及用户输入方法时不执行该方法。
答案 0 :(得分:3)
您可以使用或不使用NSTimer
来执行此操作。
NSTimer
:- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(request) object:nil];
[self performSelector:@selector(request) withObject:nil afterDelay:YOUR_DESIRED_PAUSE_TIME];
}
NSTimer
:- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (theTimer)
{
if ([theTimer isValid])
{
[theTimer invalidate];
}
theTimer = nil;
}
theTimer = [NSTimer scheduledTimerWithTimeInterval:YOUR_DESIRED_PAUSE_TIME target:self selector:@selector(userPaused:) userInfo:nil repeats:NO];
}
答案 1 :(得分:0)
我认为没有直接的方法可以做到这一点,所以你必须稍微解决一下。
您可以在用户输入时收听委托方法。 我会使用它,并将计时器设置为属性,在那里激活(例如3秒)。如果用户再次键入,我会重新启动计时器。 这样,只有当用户停止键入3秒钟时,计时器才会启动。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if(self.timer)
{
[self.timer invalidate];
self.timer = nil;
}
self.timer = [NSTimer scheduledTimerWithTimeInterval: 3 target:self selector: @selector(timerFired:) userInfo: nil repeats: NO];
}
这应该做你想要的!当用户取消选择搜索栏时,不要忘记使计时器无效。