目标 C:摇晃问题
Posted
技术标签:
【中文标题】目标 C:摇晃问题【英文标题】:Objective C: Shake problems 【发布时间】:2011-01-27 16:45:37 【问题描述】:我检测到将启动动画的抖动,当它结束时,它会停止动画。有时它可以工作,但有时它没有意识到震动已经结束,所以它永远不会调用motionEnded 方法。有没有其他人有这个问题?解决方案?
-(BOOL)canBecomeFirstResponder
return YES;
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:NO];
[self becomeFirstResponder];
-(void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:NO];
-(void)viewDidDisappear:(BOOL)animated
[self resignFirstResponder];
[super viewDidDisappear:NO];
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
if (event.type == UIEventSubtypeMotionShake )
NSLog(@"1");
[img startAnimating];
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
if (event.type == UIEventSubtypeMotionShake )
NSLog(@"3");
[img stopAnimating];
【问题讨论】:
【参考方案1】:Apple 似乎在讨论您在这里遇到的“不一致”:http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html
在清单 4-2 下显示:
...然而,有一个重要的 触摸事件和触摸事件之间的区别 震动运动事件。当用户 开始摇晃设备,系统 向第一个发送运动事件 motionBegan:withEvent: 中的响应者 信息;如果第一响应者 不处理事件,它旅行 在响应者链上。如果摇晃 持续不到一秒左右, 系统发送一个motionEnded:withEvent: 给第一响应者的消息。 但如果 摇晃持续时间更长,或者如果 系统确定运动不是 摇一摇,第一响应者收到一个 motionCancelled:withEvent: 消息。
我建议添加一个 motionCancelled:withEvent 回调,以查看在您没有收到 motionEnded 调用的情况下是否会发生这种情况。
【讨论】:
以上是关于目标 C:摇晃问题的主要内容,如果未能解决你的问题,请参考以下文章