События касания iOS не принимаются в правильном порядке (завершение не произошло в нужное время) - PullRequest
2 голосов
/ 03 декабря 2011

Итак, я пытаюсь описать следующее поведение в этой точной последовательности

touch 1 STARTED
touch 1 moved
touch 1 moved

touch 2 STARTED
touch 2 moved
touch 2 ENDED

touch 1 moved
touch 1 moved
touch 1 ENDED

Но вместо этого они возвращаются в неправильном порядке:

2011-12-02 14:55:37.187 coreplotround2[7396:707] touch 1 STARTED
2011-12-02 14:55:41.182 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:41.582 coreplotround2[7396:707] touch 1 moved

2011-12-02 14:55:41.743 coreplotround2[7396:707] touch 2 STARTED
2011-12-02 14:55:41.902 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:41.904 coreplotround2[7396:707] touch 2 moved <---- at this point my 2nd finger is released!!

2011-12-02 14:55:45.533 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:45.533 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:45.533 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:45.533 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:45.533 coreplotround2[7396:707] touch 1 moved
2011-12-02 14:55:45.549 coreplotround2[7396:707] touch 1 ENDED
2011-12-02 14:55:45.566 coreplotround2[7396:707] touch 2 ENDED

Проблема в том, что касание 2 ENDED происходит одновременно с касанием 1 ENDED, даже если касание 2 закончилось НАМНОГО раньше.

Я использую методы touchesBegan, touchesMoved, touchesEnded.

Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 04 декабря 2011

Я понял почему.Я вложил в подкласс объект из библиотеки графиков Core Plot.Этот объект был подклассом UIView, поэтому я ожидал, что он получит прикосновения.Поэтому я повторно объявил слушателей касания и попытался поэкспериментировать, чтобы увидеть, как они себя вели.

Я полагаю, что в этом конкретном объекте Core Plot происходит что-то странное, что приводит в порядок порядок касаний.Я не могу сказать вам, что это такое.

Я обнаружил это, создав новый проект с пустым представлением и протестировав мультитач.

Вместо создания подкласса Core Plot, я решил создать UIViewповерх этого перехватить мультиташи и затем вызвать соответствующих делегатов в Базовом графике.

...