2012-05-21 2 views
2

Я начал экспериментировать с обработчиком событий shake, чтобы стереть некоторые данные в моем приложении. Мой обработчик встряски начинается с перехвата события shake внутри подкласса UIApplication.Как управлять непреднамеренными событиями shake на iphone

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

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

Одна из моих идей - использовать таймаут. Если предупреждение игнорируется в течение определенного промежутка времени, тогда встряска игнорируется. Мне интересно, есть ли другие решения.

+0

Удалось ли вам преодолеть проблему? –

+0

Пока нет. Это обновление пост-релиза, поэтому это не приоритет. Все еще рассматриваю это. Я продолжу здесь. Я мог бы подтвердить, что устройство было обращено лицом к лицу перед жестом встряхивания. – Jim

ответ

0

Вы можете использовать датчик окружающего света/датчика приближения. Опросите его, чтобы узнать, распознает ли он свет, если он инициирует стирание, если нет. Это позаботится о проблеме «в кармане».

0

Вы можете дождаться появления нескольких жестов встряхивания. Если вы не получите второй (или третий или n-ый) жест в течение таймаута, то проигнорируйте жест? Самые преднамеренные тряски вызовут несколько жестов.

+0

Ваше предложение выглядит как хорошее место для начала. Из того, что я видел, тряска может привести к нескольким событиям встряхивания. это потребует тестов som emore. сотрясение до стирания, возможно, не будет полезным в конце, но заинтересовано, потому что это похоже на поведение эт-э-эскиза. – Jim