本文介绍了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:如何检测摇动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!