Ответ 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:.