我正在检测将启动动画的抖动,当它结束时,它会停止制作动画。有时它可以工作,但有时它没有意识到震动已经结束所以它永远不会调用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];
}
}
答案 0 :(得分:0)
Apple似乎在讨论您在这里遇到的“不一致”:http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html
在清单4-2中,它显示为:
......然而,有一个重要的 触摸事件与之间的区别 摇动事件。当用户 开始摇动设备,系统 向第一个发送动作事件 motionBegan中的响应者:withEvent: 信息;如果第一响应者 旅行不会处理这个事件 响应者链。如果摇晃 持续不到一秒左右, 系统发送一个motionEnded:withEvent: 消息给第一响应者。 但是如果 摇晃持续时间更长或是否持续 系统确定运动不是 摇,第一响应者收到一个 motionCancelled:withEvent:message。
我建议添加一个motionCancelled:withEvent回调来查看在没有动画调用的情况下是否会发生这种情况。