Как использовать Shake API в iPhone SDK 3.0?

Apple анонимный API Shake в iPhone SDK 3.0. Я не могу найти никакой информации об этой новой функции.

Кто знает, как его использовать? В любом примере ссылка будет хорошей.

Ответы

Ответ 1

API, который вы ищете, находится в UIResponder:

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;

Обычно вы просто реализуете это:

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

в вашем подклассе UIViewController (UIViewController является подклассом UIResponder). Кроме того, вы хотите обработать его в движенииEnded: withEvent:, not motionBegan: withEvent:. motionBegan: withEvent: вызывается, когда телефон подозревает, что тряска происходит, но ОС может определить разницу между целенаправленным встряхиванием пользователя и случайным встряхиванием (например, подняться по лестнице). Если ОС решит, что это не настоящий трясет после motionBegan: withEvent: называется вызовом motionCancelled: вместо motionEnded: withEvent:.

Ответ 3

Недавно Joe Hewitt передал код Three20, который использует событие тряски 3.0. Похоже, вам просто нужно реализовать какой-то простой код в -motionBegan:withEvent: внутри UIResponder.

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    if (event.type == UIEventSubtypeMotionShake) {
        ...
    }
}