didUpdateHeading не вызывается, когда представление используется в качестве наложения камеры
У меня проблема со следующим кодом:
Я реализовал простой ViewController с именем LayoutViewController, который показывает изображение, которое автоматически перемещается в соответствии с магнитным направлением. код состоит в:
lm = [[CLLocationManager alloc] init];
lm.delegate = self;
lm.desiredAccuracy = kCLLocationAccuracyBest;
lm.distanceFilter = kCLDistanceFilterNone;
[lm startUpdatingLocation];
lm.headingFilter = kCLHeadingFilterNone;
[lm startUpdatingHeading];
ввиду загрузил, затем я реализовал didUpdateHeading, где анимация выполняется. Все работает отлично. В другом контроллере представления я поместил кнопку и в IBAction я положил:
LayoutViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"LayoutViewController"];
и все заработало.
Проблема в том, что если я пытаюсь использовать LayoutViewController в качестве наложения камеры, анимация не работает.
я реализовал:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = YES;
picker.modalPresentationStyle = UIModalPresentationFullScreen;
LayoutViewController* overlayView = [self.storyboard instantiateViewControllerWithIdentifier:@"LayoutViewController"];
picker.cameraOverlayView=overlayView.view;
([picker setCameraOverlayView:overlayView.view]
вместо picker.cameraOverlayView=overlayView.view
дает ту же проблему)
При этом он открывает камеру, и я могу видеть изображение, которое у меня есть в LayoutViewController, поэтому экземпляр LayoutViewController успешно загружен, но анимация не выполняется, так как он вызывает смещение didupdateheading не вызывается.
Пожалуйста, помогите мне!
1 ответ
Вы сохраняете объект LayoutViewController? Или вы устанавливаете его только как cameraOverlayView?
Если вы не сохраните его, CLLocationManager также будет освобожден.