Чтобы исправить вашу проблему, откажитесь от метода handleTouches. Первое, что вы делаете в методе handleTouches, это переключаете его на touchPhase, но это вам уже дано. Если вы получаете прикосновение в прикосновениях Began, вы знаете, что прикосновение в UITouchPhaseBegan. Объединяя касания из четырех методов касания в один метод, вы побеждаете цель иметь четыре метода делегата.
В каждом из этих способов Apple дает вам возможность работать с разными фазами текущего касания.
Во-вторых, вам не нужно искать событие для текущего касания, оно предоставляется вам в качестве параметра: касания.
Событие состоит из набора касаний. Для удобства вам даны текущие прикосновения, даже если они также могут быть найдены в событии.
Итак, в касаниях Началось, вы начинаете отслеживать касание.
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
NSString *startPoint = NSStringFromCGPoint([[touches anyObject] locationInView:self]);
NSDictionary * touchData = [NSDictionary dictionaryWithObjectsandKeys: startPoint, @"location", touches, @"touch"]
[startingLocations addObject:touchData];
}
Я использую массив словарей для хранения сенсорных данных.
Попробуйте отделить ваш код и переместить его в соответствующий сенсорный метод. Что касается направления, у Apple есть пара примеров проектов, которые фокусируются на прикосновениях и показывают, как настроить эти методы.
Помните, что эти методы будут вызываться автоматически для каждого касания во время каждой фазы, вам не нужно циклически проходить событие, чтобы узнать, что произошло.
Указатель на каждый набор касаний остается постоянным, только данные меняются.
Кроме того, я прочел бы раздел руководства по программированию для iPhone OS, посвященный обработке событий, который углубляется в то, что я сказал выше, с несколькими диаграммами, объясняющими связь касаний с событиями во времени.
Выдержка:
В iPhone OS объект UITouch
представляет собой прикосновение, и UIEvent
Объект представляет собой событие. Мероприятие
объект содержит все сенсорные объекты для
текущая мультитач последовательность и
может предоставить сенсорные объекты, специфичные для
вид или окно (см. Рисунок 3-2).
сенсорный объект является постоянным для данного
палец во время последовательности, и UIKit
мутирует как он отслеживает палец
во всем этом. Сенсорные атрибуты
это изменение является фазой
касание, его расположение в представлении, его
предыдущее местоположение и его метка времени.
Код обработки событий оценивает эти
атрибуты, чтобы определить, как реагировать
на мероприятие.