Mar*_*ark 2 iphone accelerometer ipad ios-simulator
据我所知,我的应用程序应该在我使用XCode中的iPad模拟器时触发加速度计事件,但事实并非如此.
我已经google了一下,似乎加速计没有在模拟器中实现,这是正确的吗?如果是这样,为什么他们会有一个"硬件 - >摇动手势"菜单选项?
我的代码如下:
.h文件:
@interface MyViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, UIAccelerometerDelegate>{
UIAccelerometer *accelerometer;
//...other stuff
}
@property (nonatomic, retain) UIAccelerometer *accelerometer;
@end
Run Code Online (Sandbox Code Playgroud)
那么.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
Run Code Online (Sandbox Code Playgroud)
这看起来不错吗?
模拟器中没有加速器.
通过直接将UIEvent发送到活动应用程序来生成"硬件→摇动手势".
尽管Shake Gesture是在设备上使用加速器实现的,但从概念上讲,它们是两种不同类型的用户输入 - 手势是一种事件,加速度是连续变化.因此,Shake Gesture菜单项存在于仅使用此类手势的应用程序(例如,Shake to Undo),但不需要知道确切的加速度向量.