IPhone - Как запустить событие немедленно - PullRequest
0 голосов
/ 28 августа 2009

Я работаю над приложением Iphone и новичком в dev. Прошу прощения, если мой вопрос очень простой. Я искал в сети, но не смог получить ответ.

Мой вопрос: когда пользователь касается iphone, я хочу, чтобы это событие было немедленно выполнено вместо ожидания завершения предыдущего события. Я вызываю цикл while (присутствует в другом классе) внутри метода touchBegan. Я хочу остановить этот цикл, когда получу еще одно сенсорное событие. Но событие touchBegan не вызывается (вместо этого ставится в очередь), поскольку я все еще присутствую при касании началось.

Может ли кто-нибудь помочь мне, как немедленно запустить событие касания, а не ждать завершения предыдущего события.

Заранее спасибо.

1 Ответ

1 голос
/ 28 августа 2009

На iPhone одно событие должно быть завершено до обработки следующего события. В основном вы хотите иметь код, который не будет выполняться в течение длительного времени, чтобы ваше приложение оставалось отзывчивым на ввод данных пользователем.

Есть несколько способов справиться с этим.

  1. Поместите часть кода в новый поток и запустите этот поток с помощью метода touchBegan.
  2. Или превратить цикл в несколько событий в главном потоке. Вы можете сделать это по телефону:

    - (void)initializeLoop
    {
      loopCounter = 0;
        [self performSelector:@selector(nextLoop) withObject:nil afterDelay:0.0];
    }
    
    - (void)nextLoop
    {
      loopCounter++;
      if (loopCounter<MaxCount)
        [self performSelector:@selector(nextLoop) withObject:nil afterDelay:0.0];
    }
    

Таким образом, новое событие touchEnded может обрабатываться между этими другими событиями. Установка задержки выше 0,0 сделает приложение еще более отзывчивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...