В моем приложении Objective-C Mac есть текстовое поле.
Это то, что я хочу: когда я прекращаю запись в текстовом поле более чем на 5 секунд, он запускает что-то. Это возможно?
Если это так, может кто-нибудь объяснить, как?
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]; }
Используйте -performSelector:withObject:afterDelay: и отмените запрос на выполнение, если пользователь снова начнет печатать.Вот грубый пример:
-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 ]; }