uinavigationcontroller - UIAccelerometer, ViewControllers, and TabViewController, switching between tabs and MotionBegan not called -
so have application based on tabbarcontroller , in 1 of tabs im using uiaccelerometer. problem im seeing can access , use accelerometer fine until switch tabs , switch back. instance accelerometer on tab1, , click tab2 , tab1 accelerometer off.
in viewwillappear method im setting viewcontroller firstresponder so:
- (void)viewwillappear:(bool)animated { [super viewwillappear:animated]; [self becomefirstresponder]; [accelerometer setdelegate:self]; ...}
accelerometer instance variable viewcontroller. reading in http://developer.apple.com/library/ios/documentation/eventhandling/conceptual/eventhandlingiphoneos/eventhandlingiphoneos.pdf guide if set accelerometers delegate nil phone turn off conserve battery life. noting that, removed line of code viewwilldisappear: method pretty small:
-(void)viewwilldisappear:(bool)animated { [super viewwilldisappear:animated]; //commented out line below , no dice //[accelerometer setdelegate:nil]; if([[self tableview]isediting]) [[self tableview]setediting:no]; [self resignfirstresponder];
}
perusing , net has led little info on this. other info can give here if switch tabs , forth, can navigate backwards 1 page(its got navigationcontroller , last page in navigation) , forwards accelerometer works normally. seems me not setting view controller first responder. hope there obvious im not getting here. appreciated!!!
so turns out needed override viewdidappear , viewdiddisappear methods in viewcontroller.
- (void)viewdidappear:(bool)animated { [super viewdidappear:animated]; [self becomefirstresponder];} - (void)viewdiddisappear:(bool)animated { [self resignfirstresponder]; [super viewdiddisappear:animated];}
after doing this, motionbegan called after switching between viewcontrollers. hope helps out there...
Comments
Post a Comment