UIAccelerometer, ViewControllers и TabViewController, переключение между вкладками и MotionBegan не вызывается - PullRequest
0 голосов
/ 30 апреля 2011

Итак, у меня есть приложение, основанное на TabBarController, и в одной из моих вкладок я использую UIAccelerometer.Проблема, которую я вижу, заключается в том, что я могу нормально обращаться к акселерометру и использовать его до тех пор, пока не переключу вкладки и не переключусь обратно.Скажем, например, мой акселерометр находится на tab1, и я нажимаю tab2, и обратно на tab1 акселерометр выключен.

В моем методе ViewWillAppear я устанавливаю viewcontroller как первый ответчик так:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[self becomeFirstResponder];

[accelerometer setDelegate:self];
...}

акселерометр моя переменная экземпляра для viewcontroller.Итак, я читал в http://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/EventHandlingiPhoneOS.pdf это руководство, что, если вы установите делегат акселерометра в ноль, телефон отключит его, чтобы продлить срок службы батареи.Отметив это, я удалил эту строку кода из моего метода viewWillDisappear:, который теперь довольно мал:

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
    //commented out the line below and no dice
    //[accelerometer setDelegate:nil];

if([[self tableView]isEditing])
    [[self tableView]setEditing:NO];
[self resignFirstResponder];

}

Просматривая SO, и сеть привела к малой информации об этом.Единственная другая информация, которую я могу здесь дать, это то, что, если я переключаю вкладки назад и вперед, я могу перемещаться назад на одну страницу (она также имеет навигационный контроллер и является последней страницей в навигации), и акселерометр затем работает нормально.Мне кажется, что он не устанавливает контроллер представления в качестве первого респондента.Я надеюсь, что есть что-то очевидное, чего я здесь не получу.Любая помощь будет высоко ценится !!!

1 Ответ

0 голосов
/ 23 июля 2011

Получается, что мне нужно переопределить методы viewDidAppear и viewDidDisappear в моем viewController.

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];}

- (void)viewDidDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewDidDisappear:animated];}

После этого вызывается motionBegan после переключения между viewControllers. Надеюсь, это кому-нибудь поможет ...

...