У меня проблема в том, что я помогаю кому-то пролить свет. Я уверен, что это что-то очень простое, но я просто не могу этого увидеть и действительно могу использовать дополнительный набор глаз, чтобы помочь найти эту ошибку.
Приложение, над которым я работаю, использует UIImagePickerController для представления предварительного просмотра камеры со скрытым пользовательским интерфейсом стандартной камеры. Этот предварительный просмотр реализует представление cameraOverlay с несколькими кнопками для выполнения моих необходимых задач, одна из которых - отключить предварительный просмотр камеры.
По какой-то причине функция отклонения вида с камеры не будет работать при вызове кнопкой в режиме наложения. Я могу NSLog функцию и вижу, что она на самом деле вызывается кнопкой, но просто не позволяет dismissModalViewController работать. Я протестировал функцию, заставив NSTimer вызывать ее через несколько секунд после загрузки, и она работает нормально, только не тогда, когда я вызываю ее с помощью кнопки в CameraOverlay.
Мой viewController (CameraTestViewController.m) вызывает UIImagePicker, как показано ниже, нажатием кнопки.
-(IBAction) getPhoto:(id) sender {
OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
picker.cameraOverlayView = overlay;
picker.showsCameraControls = NO;
picker.toolbarHidden = YES;
[self presentModalViewController:picker animated:NO];
//[self performSelector:@selector(doCancel) withObject:nil afterDelay:10];
}
Я отклонил вид с камеры этим методом в другом месте viewController
-(void)doCancel
{
NSLog (@"doCancel method has been called");
[picker dismissModalViewControllerAnimated:YES];
}
Затем в своем классе OverlayView.m я установил необходимые кнопки и предоставил метод, который вызывает прекращение работы контроллера модального представления.
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Clear the background of the overlay:
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
...
myButton04 = [UIButton buttonWithType:UIButtonTypeCustom];
myButton04.frame = CGRectMake(10, 447, 44, 13);
[myButton04 setTitle:@"" forState:UIControlStateNormal];
[myButton04 addTarget:self action:@selector(scanButton05TouchUpInside) forControlEvents:UIControlEventTouchUpInside];
[myButton04 setImage:[UIImage imageNamed:@"camControlsBack.png"] forState:UIControlStateNormal];
[self addSubview:myButton04];
...
}
return self;
}
- (void) scanButton05TouchUpInside {
NSLog(@"BACK BUTTON HAS BEEN PRESSED");
CameraTestViewController *baseViewController = [[CameraTestViewController alloc] init];
[baseViewController doCancel];
}
ЛЮБАЯ помощь по этому вопросу была бы очень признательна. Я устал от того, что у меня багровый лоб от удара головой об стену над этим. : Круто:
СПАСИБО!