Grabación de audio a través de un micrófono iOS y problemas con una barra roja superior

Traté de grabar audio a través del micrófono. Estoy usando AVAudioRecorder. La grabación funciona bien, pero hay un problema. No puedo ver la barra roja superior después de que comience la grabación. Incluso no puedo verlo desapareciendo después de que la grabación se detiene. Pero cuando dejo de grabar e bash popViewController:animated la barra roja superior popViewController:animated aparece y desaparece al mismo time. Después de esto, mi vista se desplaza hacia arriba.

Aquí está mi código en viewDidLoad:

 NSArray *pathComponents = [NSArray arrayWithObjects: [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], @"TempRecord.m4a", nil]; NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents]; // Setup audio session AVAudioSession *session = [AVAudioSession shanetworkingInstance]; [session setCategory:AVAudioSessionCategoryRecord error:nil]; // Define the recorder setting NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init]; [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey]; [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; // Initiate and prepare the recorder NSError *error; recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:&error]; [recorder setDelegate:self]; [recorder setMeteringEnabled:YES]; if(![recorder prepareToRecord])NSLog(@"Error preparing"); if (error) { NSLog(@"error: %@", [error localizedDescription]); } else { // if ([session respondsToSelector:@selector(requestRecordPermission:)]) { [session performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) { if (granted) { // Microphone enabled code NSLog(@"Microphone is enabled.."); [self performSelector:@selector(startRecording) withObject:nil afterDelay:0.3]; } else { // Microphone disabled code NSLog(@"Microphone is disabled.."); [_recordButton setEnabled:NO]; dispatch_async(dispatch_get_main_queue(), ^{ microphoneDisabledAllert =[[UIAlertView alloc] initWithTitle:@"Microphone Access Denied" message:@"This app requires access to your device's Microphone.\n\nPlease enable Microphone access for this app in Settings / Privacy / Microphone" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; [microphoneDisabledAllert setDelegate:self]; [microphoneDisabledAllert show]; }); } }]; } } } 

y aquí están mis dos methods para controlar la grabación

 -(void)startRecording{ NSError* error; AVAudioSession *session = [AVAudioSession shanetworkingInstance]; [session setActive:YES error:&error]; if (error) NSLog(@"Error start:[%@]",[error localizedDescription]); [recorder record]; recordTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; } - (IBAction)stopRecording:(id)sender { [recorder stop]; [recordTimer invalidate]; recordTimer=nil; NSError* error; AVAudioSession *audioSession = [AVAudioSession shanetworkingInstance]; [audioSession setActive:NO error:&error]; if(error)NSLog(@"Error stop:[%@]",[error localizedDescription]); [self.navigationController popViewControllerAnimated:YES]; } 

EDIT: Actualmente estoy trabajando en iOS 8, y no hay errores en la console.