iOS — фотографирование после нажатия кнопки в UIImagePickerController CustomOverlayView

Я искал ответы на подобные вопросы, но ничего из того, что я пробовал, не сработало. Когда я нажимаю любую кнопку в наложенном виде, камера только фокусируется — никаких действий не происходит. Вот мой код:

Обновление: на предыдущий вопрос был дан ответ - код был в порядке, я просто не предупреждал себя в методе testIfButtonResponds. Теперь мне интересно, как отключить камеру и показать захваченное изображение в UIImageView.

Кроме того, UIImageView *DisplayedPhoto был сделан в IB, поэтому он имеет рамку.

@interface CameraViewController ()
@property UIImagePickerController *PickerController;
@property (weak, nonatomic) IBOutlet UIImageView *DisplayedPhoto;
@end


- (UIView *)createCustomOverlayView
{

    // Main overlay view created
    UIView *main_overlay_view = [[UIView alloc] initWithFrame:self.view.bounds];

    // Clear view (live camera feed) created and added to main overlay view
    // ------------------------------------------------------------------------
    UIView *clear_view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - self.HeightOfButtons)];
    clear_view.opaque = NO;
    clear_view.backgroundColor = [UIColor clearColor];
    [main_overlay_view addSubview:clear_view];
    // ------------------------------------------------------------------------


    // Creates the buttons on the bottom of the view (on top of the live camera feed)
    // Then adds the buttons to the main overlay view
    // ------------------------------------------------------------------------
    for(int i = 0; i < 2; i++) {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        // when a button is touched, UIImagePickerController snaps a picture
        [button addTarget:self action:@selector(testIfButtonResponds) forControlEvents:UIControlEventTouchUpInside];
        button.frame = CGRectMake( i * self.view.frame.size.width / 2, self.view.frame.size.height - self.HeightOfButtons, self.view.frame.size.width / 2, self.HeightOfButtons);
        [button setBackgroundColor:[UIColor redColor]];
        [main_overlay_view addSubview:button];
    }
    // ------------------------------------------------------------------------

    return main_overlay_view;
}

- (void)makeCustomCameraAppear
{
    self.PickerController = [[UIImagePickerController alloc] init];
    self.PickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.PickerController.showsCameraControls = NO;
    self.PickerController.delegate = self;

    UIView *overlay_view = [self createCustomOverlayView];
    [self.PickerController setCameraOverlayView:overlay_view];

    [self presentViewController:self.PickerController animated:YES completion:NULL];
}

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

- (void) testIfButtonResponds
{
    [self.PickerController takePicture];
    [self.PickerController dismissViewControllerAnimated:YES completion:nil];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *chosen_image = info[UIImagePickerControllerEditedImage];
    self.DisplayedPhoto.image = chosen_image;
    [self.PickerController dismissViewControllerAnimated:YES completion:NULL];
}

person user3562967    schedule 23.07.2014    source источник
comment
Можете выложить код метода: testIfButtonResponds? Это вызывается?   -  person Matías R    schedule 24.07.2014
comment
Ах, вы правы, его вызывали, но мой метод не предупреждал меня. Спасибо! У меня все еще возникают проблемы с фотографированием одной из кнопок, поэтому я собираюсь обновить свой код, чтобы показать, что я пытаюсь сделать.   -  person user3562967    schedule 24.07.2014
comment
Просто обновил код   -  person user3562967    schedule 24.07.2014
comment
В imagePickerController:didFinishPickingMediaWithInfo вы должны сделать [self dismissViewControllerAnimated:YES completion:nil];, а не [self.PickerController...   -  person Matías R    schedule 24.07.2014