加速计是否适用于iphone / ipad模拟器?

时间:2010-05-04 04:14:10

标签: iphone ipad ios-simulator accelerometer

据我所知,我的应用程序应该在我使用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

这看起来不错吗?

2 个答案:

答案 0 :(得分:5)

模拟器中没有加速器。

通过直接将UIEvent发送到活动应用程序来生成“硬件→摇动手势”。

虽然Shake Gesture是在设备上使用加速器实现的,但概念上它们是两种不同类型的用户输入 - 手势是一个事件,加速度是连续变化。因此,Shake Gesture菜单项仅适用于仅使用此类手势的应用程序(例如,Shake to Undo),但不需要知道确切的加速度向量。

答案 1 :(得分:1)

Accelerometer在iPhone / iPod模拟器上无效。 “硬件 - >摇动手势”既不使用加速度计,也不使用模拟器上的safari方向变化。