2010-11-16 2 views
3

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

я использую ниже код для обнаружения его

#define kAccelerationThreshold  2.2 
#define kUpdateInterval   (1.0f/10.0f) 

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 
     if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold) 
      ... 
} 

ответ

2

«дрожанием Жест» (один можно на тренажере) не является обнаружение пользовательских встряхивания с акселерометром, а событие дрожания обнаруживается прошивкой. Таким образом, вы не можете использовать свой метод акселерометра didAccelerate для его обнаружения. Проверьте второй ответ (не тот, который был принят) на this question, чтобы узнать, как определить жест встряхивания.

+0

если вы имеете в виду ответ от «Kendall Helmstetter Geln» .it не работает – 2010-11-16 15:27:49

+0

Это точно. Я сделал это. Вероятно, вы кое-что упустили. Поиск «Обнаружение движения iPhone» в stackoverflow и google вы найдете больше ответов, рассказывающих вам подробно, как это сделать. Он работает на симуляторе. – lukya

5

Посмотрите на метод motionEnded: UIResponder. Вы можете реализовать motionEnded на ваше окно, представление или контроллер представления для обнаружения встряски, как это:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
    if (event.type == UIEventSubtypeMotionShake) 
    { 
     // your code here 

    } 
} 

В моем приложении я нужен обработчик встряхивания приложения ширины. Поэтому я подклассифицировал UIWindow (у моего приложения есть одно окно, как и большинство), и поместите обработчик в этот подкласс.

1

Он работает, но не в симуляторе, как изложено в других ответах. Просто проигнорируйте этот факт и вызовите метод в симуляторе другими способами (например, кнопкой и т. Д.). Я бы не рекомендовал использовать фактическое событие shake, которое соответствует событию, которое вы можете запустить через симулятор. Если вы не хотите, чтобы ваши пользователи бросали свои телефоны повсюду. Встроенное обнаружение встряхивания не очень чувствительно.

Смежные вопросы