目标 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:摇晃问题的主要内容,如果未能解决你的问题,请参考以下文章

UIViewPropertyAnimator 目标 C 问题

如何在目标 c 中对目标的项目级 API 进行单元测试?

目标 C 基本问题

Visual Studio C/C++ 中的多个构建目标

如何在 Swift 子类中引用目标 c 实例变量?

目标 C:按特定顺序阅读特征