движение ядра, движущегося двумя предметами с помощью акселерометра - PullRequest
0 голосов
/ 04 августа 2011

Я пытаюсь переместить две кнопки с помощью акселерометра в xcode.У меня работает первая кнопка, когда я вызываю startDrifting, но когда я вызываю startDrifting2 для второй кнопки, со второй кнопкой ничего не происходит.Я попытался вызвать startAccelerometerUpdatesToQueue для startDrifting2, но затем перестал работать первый.есть идеи?

-(void) startDrifting:(UIButton *) button 
{
    [self.motionManager startAccelerometerUpdatesToQueue:[[[NSOperationQueue alloc] init] autorelease] withHandler:^(CMAccelerometerData *data, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        CGRect labelFrame = button.frame;
        labelFrame.origin.x += data.acceleration.x * MOTION_SCALE;
        if (!CGRectContainsRect(self.view.bounds, labelFrame)) 
            labelFrame.origin.x = button.frame.origin.x;
        labelFrame.origin.y -= data.acceleration.y * MOTION_SCALE;
        if (!CGRectContainsRect(self.view.bounds, labelFrame)) 
            labelFrame.origin.y = button.frame.origin.y;
        button.frame = labelFrame;
    } );

}];
}

-(void) startDrifting2:(UIButton *) button 
{
CMAccelerometerData *data = [self.motionManager accelerometerData];  

dispatch_async(dispatch_get_main_queue(), ^{
    CGRect labelFrame = button.frame;
    labelFrame.origin.x += data.acceleration.x * MOTION_SCALE * 1;
    if (!CGRectContainsRect(self.view.bounds, labelFrame)) 
        labelFrame.origin.x = button.frame.origin.x;
    labelFrame.origin.y += data.acceleration.y * MOTION_SCALE * 1;
    if (!CGRectContainsRect(self.view.bounds, labelFrame)) 
        labelFrame.origin.y = button.frame.origin.y;
    button.frame = labelFrame;
});  
}

1 Ответ

0 голосов
/ 01 ноября 2011

Попробуйте установить делегата для себя, а затем вернуть его главному делегату приложения. Когда вы нажмете следующую кнопку, попробуйте переназначить делегата другим способом.

...