трясти жест не работает - PullRequest
3 голосов
/ 16 ноября 2010

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

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

#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)
            ...
}

Ответы [ 3 ]

5 голосов
/ 16 ноября 2010

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

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

    }
}

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

2 голосов
/ 16 ноября 2010

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

1 голос
/ 16 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...