本文介绍了iOS:如何检测摇动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将以下代码添加到我的appDelegate.m

I added the following code to my appDelegate.m

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (motion == UIEventSubtypeMotionShake )
    {
        // User was shaking the device. Post a notification named "shake".
        [[NSNotificationCenter defaultCenter] postNotificationName:@"shake" object:self];
    }
}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
}

- (void)shakeSuccess
{
    // do something...
}

然后我补充说:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    // INIT THE BACKGROUND PATH STRING

    [self refreshFields];
    [self.window addSubview:navController.view];
    [self.window makeKeyAndVisible];
    ***[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shakeSuccess) name:@"shake" object:nil];***

    return YES;
}

当我在iPhone上启动应用程序时,名为shakeSuccess的方法没有不叫。
如何在我的应用程序中实现此功能?
任何想法?

When I start my app on my iPhone, the method named "shakeSuccess" doesn't called.What should I do to implement this function in my app?any idea?

推荐答案

这可能对你有所帮助...

This might help you...
https://stackoverflow.com/a/2405692/796103

他说你应该将 UIApplication applicationSupportsShakeToEdit 设置为
YES 。并覆盖VC中的3种方法:

He says that you should set the UIApplication's applicationSupportsShakeToEdit toYES. and override 3 methods in your VC:

-(BOOL)canBecomeFirstResponder {
    return YES;
}

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

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

其余代码没问题。 ( -motionEnded:withEvent:

The rest of your code is fine. (the -motionEnded:withEvent:)

这篇关于iOS:如何检测摇动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-16 06:15