[iOS]实现 摇一摇 功能 Shark

1.在App's Delegate中设定applicationSupportsShakeToEdit属性

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    
    application.applicationSupportsShakeToEdit= YES; //在ios6.0后,这里其实都可以不写了
    
    self.window= [[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController= [[ViewControlleralloc] initWithNibName:@"ViewController"bundle:nil];
    self.window.rootViewController= self.viewController;
    [self.windowmakeKeyAndVisible];
    returnYES;
}

2.在你的View控制器中添加/重载canBecomeFirstResponder, viewDidAppear:以及viewWillDisappear:

//这里很重要,因为大部分视图 默认 的  canBecomeFirstResponder 是 NO的
-(BOOL)canBecomeFirstResponder {
    **return **YES;
}

-(**void**)viewDidAppear:(BOOL)animated {
    [**super **viewDidAppear:animated];
    [**self **becomeFirstResponder];
}

-(**void**)viewWillDisappear:(BOOL)animated {
    [**self **resignFirstResponder];
    [**super **viewWillDisappear:animated];
}

3.在你的view控制器中添加motionEnded:

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

IOS 3.0 + 开始支持motion事件,检测设备摇动
– motionBegan:withEvent: 摇动开始时执行
– motionEnded:withEvent: 摇动结束时执行
– motionCancelled:withEvent: 摇动被取消时执行

经过试验
UIViewController
UIWindow
UIView 都可以支持摇一摇

根本是在 motion的一系列回调 以及 canBecomeFirstResponder 等方法 都是 UIResponder 类的特性

你可能感兴趣的:([iOS]实现 摇一摇 功能 Shark)