iPhone — отображение модального представления над UIImagePickerController

#iphone #ios #cocoa-touch #uinavigationcontroller #uiimagepickercontroller

#iPhone #iOS #cocoa-touch #uinavigationcontroller #uiimagepickercontroller

Вопрос:

У меня есть UIImagePickerController, и пока он загружается, я хочу отобразить отказ от ответственности в modalView.

 - (void) viewDidLoad 
{
    self.picker = [[UIImagePickerController alloc] init];
    self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    self.picker.delegate = self;

    [self presentModalViewController:self.picker animated:NO];
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

    DisclaimerController* disclaimer = [[DisclaimerController alloc] init];  // Loads the Xib inside the init method
    UINavigationController* controller = [[UINavigationController alloc] initWithRootViewController:disclaimer];
    [self.navigationController presentModalViewController:controller animated:YES];
}
  

Но он не отображается.

И я не хочу отклонять средство выбора, пока отображается отказ от ответственности, или показывать его позже, потому что есть некоторые процедуры, которые требуют некоторого времени, и время, когда пользователь читает отказ от ответственности, не позволит ему ждать слишком долго после закрытия отказа.

Ответ №1:

Я бы решил это с помощью AlertView.

Но если вы предпочитаете использовать свой метод, возможно, это поможет

Попробуйте это:

 - (void) showModalDisclaimer {
        DisclaimerController* disclaimer = [[DisclaimerController alloc] init];  
        // Loads the Xib inside the init method
        UINavigationController* controller = [[UINavigationController alloc] 
                                          initWithRootViewController:disclaimer];
        [self.picker presentModalViewController:controller animated:YES]; 
        // notice self.picker
}

- (void) viewDidLoad 
{
    self.picker = [[UIImagePickerController alloc] init];
    self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    self.picker.delegate = self;

    [self presentModalViewController:self.picker animated:NO];
    [[UIApplication sharedApplication] setStatusBarHidden:NO   
                       withAnimation:UIStatusBarAnimationNone];
    [self performSelector:@selector(showModalDisclaimer) withObject:nil afterDelay:0.1];
}
  

Комментарии:

1. Спасибо, что все работает нормально. Действительно ли нужна задержка? Потому что, если я заменю performSelector на код showModalDisclaimer, он также будет работать.