据我所知,我的应用程序应该在我使用XCode中的iPad模拟器时触发加速度计事件,但事实并非如此。
我已经google了一下,似乎加速计没有在模拟器中实现,这是正确的吗?如果是这样,为什么他们会有一个“硬件 - >摇动手势”菜单选项?
我的代码如下:
.h文件:
@interface MyViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, UIAccelerometerDelegate>{
UIAccelerometer *accelerometer;
//...other stuff
}
@property (nonatomic, retain) UIAccelerometer *accelerometer;
@end
然后是.m文件:
@implementation MyViewController
@synthesize accelerometer;
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"X: ", acceleration.x]);
NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"Y: ", acceleration.y]);
NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"Z: ", acceleration.z]);
}
- (void)viewDidLoad {
[super viewDidLoad];
self.accelerometer = [UIAccelerometer sharedAccelerometer];
self.accelerometer.updateInterval = .1;
self.accelerometer.delegate = self;
}
@end
这看起来不错吗?
答案 0 :(得分:5)
模拟器中没有加速器。
通过直接将UIEvent发送到活动应用程序来生成“硬件→摇动手势”。
虽然Shake Gesture是在设备上使用加速器实现的,但概念上它们是两种不同类型的用户输入 - 手势是一个事件,加速度是连续变化。因此,Shake Gesture菜单项仅适用于仅使用此类手势的应用程序(例如,Shake to Undo),但不需要知道确切的加速度向量。
答案 1 :(得分:1)
Accelerometer在iPhone / iPod模拟器上无效。 “硬件 - >摇动手势”既不使用加速度计,也不使用模拟器上的safari方向变化。