我的Objective-C Mac应用程序中有一个文本字段。
这就是我想要的:当我停止在文本字段中写入超过5秒时,它会运行一些东西。这可能吗?
如果是这样,有人可以解释一下吗?
答案 0 :(得分:3)
controlTextDidChange:
。controlTextDidChange:
时启动计时器(并使旧计时器无效)。以下是一个例子:
- (void)controlTextDidChange:(NSNotification *)notification
{
if (timeoutTimer != nil) {
[timeoutTimer invalidate];
[timeoutTimer release];
timeoutTimer = nil;
}
timeoutTimer = [[NSTimer
scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(doSomething)
userInfo:nil
repeats:NO] retain];
}
答案 1 :(得分:1)
使用-performSelector:withObject:afterDelay:
,如果用户再次开始输入,则取消执行请求。这是一个粗略的例子:
- ( void )controlTextDidChange: (NSNotification *)notification
{
if ( [ notification object ] != myTextField ) {
return;
}
[ NSObject cancelPreviousPerformRequestsWithTarget: self
selector: @selector( userStoppedEditing: )
object: myTextField ];
[ self performSelector: @selector( userStoppedEditing: )
withObject: myTextField
afterDelay: 5.0 ];
}