對于搖一搖功能 iOS 中已經(jīng)提供了接口.直接調(diào)用就好了.
實現(xiàn)步驟:
1). 監(jiān)聽搖一搖方法
// 搖一搖開始
- (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
// 搖一搖結(jié)束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
// 搖一搖取消
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
2). 實現(xiàn)下面的方法用于解決搖一搖失效的情況.(ps: 使用 Xcode6.x 后創(chuàng)建的項目,僅僅實現(xiàn)第一步監(jiān)聽就可以實現(xiàn),沒有遇到這種問題).
- (BOOL)canBecomeFirstResponder {
return YES;
}
附:
如果多個控制器都需要搖一搖功能的話.例如我們的項目要求在登錄后,每個界面都可以進行搖一搖.先看一下控制器層級關(guān)系.也算是比較常規(guī)的

層級關(guān)系1

層級關(guān)系2
由于監(jiān)聽搖一搖的是控制器本身 當推出控制器后,功能會受到影響.可以考慮到繼承.將方法寫到父控制器中. 此功能同樣適用于父子控制器.由于各個navi 都是使用
addChildViewController:如果子控制器沒有實現(xiàn)方法,會實現(xiàn)父控制器的方法.