我正在尝试在此页面上实现摇动“教程”,但我认为我遗漏了一些东西。我将他的加速度计功能复制到 myAppViewController.m 文件中,并在其中放入一些 nslog,以查看当我使用模拟器“摇动”功能时它是否会进入该功能。调试控制台中没有显示任何内容。
http://mithin.in/2009/07/28/detecting-a-shake-using-iphone-sdk
谁能解释一下我可能缺少什么?或者给我指一个教程?
我发现了这个,看起来很有希望,但我不知道如何“将其放入 UIView 中” How do I detect when someone shakes an iPhone?
<小时/>编辑 - 由于已接受答案的建议,现在这是我的工作代码。
这是我在 3.0 iphone sdk 中检测摇动手势的代码。
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"{motion ended event ");
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"{shaken state ");
}
else {
NSLog(@"{not shaken state ");
}
}
最佳答案
这是我的有效答案:
//MainViewController.m
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(shake)
name:@"shake" object:nil];
if(event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake)
NSLog(@"motion Began");
}
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(shake)
name:@"shake"
object:nil];
if(event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake)
NSLog(@"motion Ended");
}
-(void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(shake)
name:@"shake"
object:nil];
if(event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake)
NSLog(@"motion Cancelled");
}
-(void)viewDidLoad {
[super viewDidLoad];
[self becomeFirstResponder];
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
[self resignFirstResponder];
}
<小时/>
我只用模拟器进行了测试,它返回了我:
2010-06-22 12:40:48.799 Cocktails[14589:207] motion Began
2010-06-22 12:40:48.800 Cocktails[14589:207] motion Ended
我希望这会有所帮助,因为我花了 2 个小时来做这项工作。
关于iphone - 如何检测 iPhone 的震动并进行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340492/