iPhone событие в «неактивном» просмотре стрельбы - PullRequest
0 голосов
/ 17 мая 2011

Я довольно новичок в разработке для iPhone. У меня есть свое «корневое» представление, и оно реализует

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

Эта реализация работает просто отлично. После того, как пользователь нажимает кнопку, я делаю pushViewController, чтобы выдвинуть новое представление в стек. Если пользователь встряхивает iPhone, акселерометр срабатывает, даже несмотря на то, что текущее «всплывающее» представление не реализует никаких методов, связанных с акселерометром. Мне кажется, что корневое представление все еще активно, хотя в стек помещено другое представление. Почему вид, который не является активным, все еще реагирует на акселерометр?

Спасибо

Tom

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Actually the root view controller is not inactive in this case. It's just not visible. It is still alive and can receive events.

У вашего делегата акселерометра есть флаг, чтобы проверить, виден ли корневой вид. Выполняйте любые операции, только если виден корень.

if (visible) {

    // Do operations
}
0 голосов
/ 17 мая 2011

Я думаю, что акселерометр ничего не знает об активных или неактивных контроллерах вида.

Единственное, что вы делаете, это устанавливаете свой ViewController в качестве делегата (для получения событий) на акселерометр. После помещения другого ViewController в стек ваш исходный ViewController продолжает существовать. И поэтому он продолжает получать события.

Вы должны разобраться с этим самостоятельно, например. проверяя локальную переменную или (но не проверяя) проверяя свойство окна представления.

if (self.view.window! = Nil) { // viewController активен }

...