Вопрос

Я использовал прикосновения, начали отслеживать целых 8 прикосновений, и каждый триггеры события. Эти прикосновения могут возникать одновременно или в шахматном порядке.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Touch Began");
    NSSet *allTouches = [event allTouches];

    for (int i=0; i<allTouches.count; i++) {
        UITouch *touch = [[allTouches allObjects] objectAtIndex:i];
        if (/*touch inside button in question*/) {
            //Trigger the event.    
        }
    }
}

Этот код работает для MultiTouch, и у него нет проблем, кроме: (см. Если вы можете догадаться)

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

Ex: Johnny - нажатие кнопки 1. Событие 1 происходит. Джонни оставляет свой палец на кнопку 1, и нажимает кнопку 2. Событие 2 происходит, но кнопка 1 все еще является частью AllTouches, и поэтому событие 1 снова срабатывает.

Так вот вот вопрос: как я могу получить новое прикосновение?

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

Решение

Тот же сенсорный объект будет возвращен на последующие вызовы touchesbegan для любого непрерывного прикосновения. Поэтому просто сохраните каждое UITouch * Нажмите, что вы уже обрабатывали, как началось (и еще не закончился), и по мере того, как вы повторяете в следующий раз в TouchesBegan, пропустите те, которые вы настолько сохранены / отмечены.

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