2009-08-28 4 views
0

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

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

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

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

ответ

1

На 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 сделает приложение еще более отзывчивым.

Смежные вопросы