хорошо, я предполагаю, что этот код находится в функции addAcceleration ...
-(void)addAcceleration:(UIAcceleration*)accel
Таким образом, вы можете увеличить частоту дискретизации, чтобы получить более детальную детальность обнаружения. Так, например, если вы в настоящее время берете 30 выборок в секунду, вы можете увеличить его до 40, 50 или 60 и т. Д. Затем решите, нужно ли подсчитывать количество выборок, попадающих в ваш отскок, и считать, что шаг. Похоже, вы не учитываете некоторые шаги из-за отсутствия некоторых отскоков.
Кроме того, какова цель переключения isChange? Разве вы не должны использовать счетчик со сбросом после x числа отсчетов? Если вы находитесь в пределах отказов ...
if (dot <= 0.994 && dot > 0.90) // bounce
вам нужно будет попасть в это «сладкое пятно» 2 раза, но, как вы его настроили, это может быть не два последовательных сэмпла подряд, это может быть первый и 5-й сэмплы или 2-й с 11-й образец. Вот где вы теряете количество шагов.