переключение датчика приближения на iPhone проигрывает событие - PullRequest
4 голосов
/ 11 марта 2009

Я использую setProximitySensingEnabled и внедрил в своем подклассе UIApplication близостиStateChanged. Похоже, что при переключении ощущения первое потерянное событие теряется.

Мой класс UIApplication довольно простой ...

  -(void)proximityStateChanged:(BOOL)state { NSLog(state ? @"ON" : @"OFF"); }

В моем делегате приложения есть UIS-переключатель, который включает / отключает датчик приближения.

-(IBAction)toggleProxy:(id)sender { [UIApplication sharedApplication].proximitySensingEnabled = prox.on; }

"Прокс" - это мой UISwitch. Тест работает нормально, когда он только начинается. Я нажимаю на переключатель, чтобы включить его, а затем на секунду кладу руку на датчик, затем убираю его и получаю:

2009-03-11 12:43:00.465 Proximity[324:20b] ON
2009-03-11 12:43:02.514 Proximity[324:20b] OFF
2009-03-11 12:43:04.046 Proximity[324:20b] ON
2009-03-11 12:43:05.621 Proximity[324:20b] OFF

Затем нажмите на выключатель, чтобы выключить его, затем снова нажмите, чтобы включить его. Теперь я получаю:

2009-03-11 12:43:12.005 Proximity[324:20b] ON
2009-03-11 12:43:14.789 Proximity[324:20b] ON
2009-03-11 12:43:16.467 Proximity[324:20b] OFF
2009-03-11 12:43:17.516 Proximity[324:20b] ON
2009-03-11 12:43:19.077 Proximity[324:20b] OFF

Обратите внимание, я получаю два ВКЛ перед ВЫКЛ. Выключение где-то потеряно. Я не могу воспроизвести это поведение с помощью мобильного приложения Google, поэтому мне интересно, сбрасывают ли они что-то между включением близости. Они не имеют датчика приближения постоянно, потому что если вы закроете датчик, экран не погаснет. Вы должны наклонить телефон вверх и наклонить его назад (чтобы смоделировать положение, в котором он будет находиться у вашего уха), а затем прикрыть сенсор.

Кто-нибудь еще играет с сенсором?

В моем конкретном приложении я записываю голосовое сообщение, и когда вы убираете телефон от уха, я хочу приостановить запись (когда у меня отключено). При первом отодвижении телефона от уха запись не приостанавливается. Однако, если я поднесу его к уху и снова уберу, он будет приостановлен.

...