我正在开发一个测量震动事件总时间的应用程序。换句话说,计时器在摇动事件开始时启动,并且计时器在摇动事件结束时停止。
所以我的问题是,如果我们用一只手握住两个iTouches然后同时摇动两个,那么震动事件会在两个iTouches上产生相同的值吗?
这是我的代码:
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake) {
timer = [NSTimer scheduledTimerWithTimeInterval:0.00025 target:self selector:@selector(showactivity) userInfo:nil repeats:YES];
}
}
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake) {
[timer invalidate];
}
}
答案 0 :(得分:0)
我只是创建一个名为NSDate
的{{1}}类型的实例变量,或者其他什么。然后在shakesBegan
:
motionBegan
输出应该说-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake) {
shakesBegan = [NSDate date];
}
}
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake) {
NSDate *shakesFinished = [NSDate date];
NSTimeInterval shakeTime = [shakesFinished timeIntervalSinceDate:shakesBegan];
NSLog(@"Shaken for %f seconds",shakeTime);
}
}
。但是,我没有设备来测试这个,所以你的里程可能会有所不同。
您收到错误的原因是您必须使Shaken for 1.233242 seconds
成为实例变量。在你的界面中这样:
shakesBegan