代码之家  ›  专栏  ›  技术社区  ›  Mark

加速度计是否适用于iPhone/iPad模拟器?

  •  2
  • Mark  · 技术社区  · 15 年前

    据我所知,当我在xcode中使用ipad模拟器时,我的应用程序应该触发加速度计事件,但事实并非如此。

    我搜索了一下,似乎加速度计没有在模拟器中实现,这是正确的吗?如果是这样,他们究竟为什么会有“硬件-晃动手势”菜单选项?

    我的代码如下:

    .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 回复  |  直到 14 年前
        1
  •  5
  •   kennytm    15 年前

    模拟器里没有加速器。

    “硬件→震动手势”是通过直接向活动应用程序发送uievent生成的。

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

        2
  •  1
  •   Gaurav Verma    15 年前

    加速度计不能在iPhone/iPod模拟器上工作。无论是“硬件-摇动手势”都不使用加速度计,也不使用模拟器上的Safari方向变化。