Заставить функцию подождать некоторое время, прежде чем она выполнится - PullRequest
3 голосов
/ 26 апреля 2011

Эй, ребята, у меня есть кнопка, которую я нажимаю, и я хочу, чтобы она подождала 10 секунд, прежде чем она сделает свое дело, например, переключится на новый вид. Как бы я поступил в этом? Любая помощь будет оценена!

Ответы [ 5 ]

10 голосов
/ 26 апреля 2011
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

Прочтите документацию по NSObject для нескольких других вариантов.

[self performSelector:@selector(myFunction:) withObject:myObject afterDelay:10.0];
2 голосов
/ 26 апреля 2011

Попробуйте это:

[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];

Тогда timer: должно выглядеть так:

- (void)timerFired:(NSTimer *)timer {
      //do stuff here
}
1 голос
/ 29 сентября 2013

Вы можете использовать:

double delayInSeconds = 10.0; // number of seconds to wait
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    /***********************
     * Your code goes here *
     ***********************/
}); 
0 голосов
/ 26 апреля 2011

Вы могли бы сделать

sleep(10)

, чтобы приложение приостановилось на 10 секунд. Примечание. Это настоящая пауза, поэтому взаимодействие с пользовательским интерфейсом вообще невозможно. Однако нажатие кнопки «Домой» сработает и переместит ваше приложение в фоновый режим.

0 голосов
/ 26 апреля 2011

вам необходимо использовать NSTimer,

Проверьте приведенный ниже код в качестве ссылки.

- (void) startTimer{

    [NSTimer scheduledTimerWithInterval:10.0f target:self selector:@selector(showElapsedTime:) userInfo:nil repeats:YES];
}

showElapsedTime будет вызвано после задержки, вы предоставляете.

-(void) showElapsedTime: (NSTimer *) timer {

    if(OnSomeCondition)
    {
      [timer invalidate];
    }

// Write your code here 
}

Позвоните StartTimer из вашего метода действия из вашего UIButton, вы получите 10 секундное ожидание.

-(void) myButtonAction:(id) sender
{
   [self StartTimer]; 
}
...