Почему мои события iOS запускаются в неправильном порядке?

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

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

Здесь я столкнулся с некоторыми техническими трудностями. У меня есть стандартные слушатели touchesBegan и didAccelerate. Проблема в том, что didAccelerate срабатывает раньше touchesBegan. Очевидно, что-то не так, поскольку он не должен начинать ускоряться до того, как летучая мышь коснется его. Могу ли я пропустить код установки?

Мне нужно исправить это, потому что, если синхронизация неверна, машина на другом конце будет лагать, и это не будет весело.

Любые советы, которые вы можете дать, будут оценены.

РЕДАКТИРОВАТЬ: я добавил несколько вызовов NSLog с форматированным [[NSDate date] timeIntervalSince1970]; Вот результат:

didAccelerate: 1364850400.03221
touchesBegan: 1364850400.21486

Таким образом, вы можете видеть, что это небольшая, но четкая разница.


person Matthew Flaschen    schedule 01.04.2013    source источник
comment
Можете ли вы добавить некоторые операторы отладки и перечислить вывод здесь или в pastebin или что-то в этом роде? Я думаю, что у меня есть предчувствие, что не так, но некоторые твердые факты никогда не повредят :)   -  person Milimetric    schedule 02.04.2013
comment
@Milimetric, хорошая идея, отредактировано.   -  person Matthew Flaschen    schedule 02.04.2013
comment
Телефон стоит на ровной поверхности или вы держите его в руке? Кроме того, вы пытались использовать платформу CoreMotion и считывали свойство timestamp из класса CMLogItem?   -  person Lefteris    schedule 02.04.2013
comment
@Lefteris, машина для ватина на этом конце бросает его, а я ударяю его токопроводящей битой.   -  person Matthew Flaschen    schedule 02.04.2013


Ответы (1)


Как вы гарантируете, что летучая мышь замыкает проводящую цепь от телефона к вашей руке? Я бы посоветовал обильно использовать материал, используемый для того, чтобы сделать перчатки удобными для сенсорного экрана. Здесь рекомендуется нейлон с серебряной резьбой: http://www.howtogeek.com/130477/diy-touch-screen-mod-makes-regular-gloves-smartphone-friendly/

ОБНОВЛЕНИЕ: О, возможно, вам придется усилить очень маленький ток, который будет испытывать летучая мышь, чтобы она могла пройти весь путь до вашей руки. Я не электрик, но портативный автомобильный аккумулятор, прикрепленный к летучей мыши через ту же нить, должен помочь.

person Milimetric    schedule 01.04.2013
comment
Спасибо! Я попробовал метод автомобильного аккумулятора и, скажем так, меня больше не беспокоит моя первоначальная проблема. - person Matthew Flaschen; 02.04.2013