Заставить UIAccelerometer работать более одного раза при переключении видов - PullRequest
0 голосов
/ 18 апреля 2011

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

Это метод, который я использую:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {     
float aX = ABS(acceleration.x);
float aY = ABS(acceleration.y);
float aZ = ABS(acceleration.z);
if(sqrt(aX*aX+aY*aY+aZ*aZ)>1.5f)
{
    SecondViewController *screen = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    //screen.words = self.easy;
    [self presentModalViewController:screen animated:YES];
    [screen release];
self.accelerometer.delegate = nil;  
}

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 18 апреля 2011

Вы можете настроить BOOL, чтобы временно отключить обработку акселерометра, когда вы представляете новый контроллер вида и избегаете вызова self.accelerometer.delegate = nil

Как только модальный переход сделан, вы можете снова включить обработку акселерометром

Редактировать - Пример:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {     

if(accelerometerEnabled) {

     //... the accelerometer data handling goes here
}

Кроме того, похоже, что я изначально не понял всех вопросов - вам также нужно будет сбросить задержку акселерометра на любой контроллер представления, который вы хотите использовать для обработки данных ускорения. Этот (второй) контроллер представления также должен иметь метод делегата акселерометра - (void).

В качестве альтернативы, вы можете обрабатывать данные ускорения в контроллере корневого представления и делать ваши представления подпредставлениями этого корневого представления. Это было бы чище, так как вам никогда не пришлось бы менять, какой контроллер обрабатывает ускорение.

...