Запрос текущего количества касаний на экране без использования событий на iPhone

StackOverflow https://stackoverflow.com/questions/2662220

Вопрос

У меня есть приложение, которое начинает воспроизводить звук, когда пользователь касается UIView и меняется на разные тона, так как пользователь скользит пальцем на экране. Звук останавливается, когда пользователь поднимает палец.

Я использую TouchesBegan, переехал и закончил события для этого.

Моя проблема заключается в прикосновении, законченные (и / или отмененные) иногда не уволены должным образом, и звук продолжает играть, даже после того, как палец поднят с экрана.

Таким образом, как обходной путь, который я хотел бы реализовать таймер, который проверил бы количество касаний на экране, и если оно равен нулю, он будет проверять и остановить аудиоплазер, если играть.

Я искал какой-код, который мог бы получить мне количество штрихов, как

UITouch * касается = [Self GetallTouchesonscreen];

или что-то :)

Это было полезно?

Решение

Прикосновения к концу события иногда не уволяются.

Я попробовал настроить точки разрыва для прикосновения, отмененные и касаются окончания событий, и иногда он не попадает.

Попробуйте пробую образец GLAPAINT с веб-сайта Apple и попробуйте NSLog в Toches завершился и сделайте несколько быстрых рисунков на экране и быстро поднимите пальцем, например, бросать пальцем на экране.

Вы будете знать, что я имею в виду. Мое нынешнее решение для этого включает в себя акселерометр :)

Подсказка: я использую это, чтобы найти все события: (void) sendEvent: (UIEETECT *) событие

Другие советы

NSSet *allTouches = [event allTouches];
for(GLuint index = 0; index < [allTouches count]; ++index)
{
    UITouch *touch = [[allTouches allObjects] objectAtIndex:index];
    if([touch phase] != UITouchPhaseCancelled)
    {
        CGPoint touchPoint = [touch locationInView:self];
        //do something with touchPoint that has state [touch phase]
    }
}

Вы можете использовать этот код во всех функциях сенсорных событий (TouchesBegan, TouchSended, TouchesMed), и вы можете подсчитать касания и знать их состояния.

Не забывайте о придежденном. Добавьте эту функцию / метод и NSLOG, когда прикосновение заканчивается там, я думаю, вы найдете недостающие прикосновения.

Если вы ищете подсчет TAP - нажав в том же месте более одного раза, не двигая пальцем, - вы можете получить его через:

-(void)iPhoneTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];
CGPoint touchPosition = [touch locationInView:self];
lastTouchTime = [touch timestamp];
myTouchCount = [touch tapCount];

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top