Доступ к камере - Задержка, чтобы закрыть окно просмотра при нажатии на кнопку отмены - PullRequest
0 голосов
/ 28 января 2012

Когда мы пытаемся получить доступ к камере, мы получаем UIActionView, где будет указано, хотите ли вы получить доступ к камере, альбому или отменить.

Мой код работает отлично, но когда я нажимаю кнопку отмены, отмена занимает около 30 секунд. И я не написал никакого кода внутри метода отмены. Я просто оставил это пустым.

Почему эта задержка? и как я могу предотвратить это?

код

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

    imagePicker = [[UIImagePickerController alloc] init];

    [imagePicker setDelegate:self];

    if (buttonIndex == 0) {


        [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];

        [self.navigationController presentModalViewController:imagePicker animated:YES]; 

    } else if (buttonIndex == 1) {


        [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

        [self.navigationController presentModalViewController:imagePicker animated:YES];

    } else {



    } 

}

Ответы [ 2 ]

1 голос
/ 28 января 2012

Если вы запускаете этот код, подключенный к XCode (т.е. он работает в отладчике), то вы получите паузу, когда он попытается выделить UIImagePickerController.Это очень медленно в отладчике.Попробуйте запустить не подключенный, и он должен быть быстрее. Также старайтесь не запускать его, если он вам не нужен.

Повторить код может показаться плохим, но вы, вероятно, можете помочь, набрав:

imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];

внутри оператора if.

Надеюсь, это поможет:)

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

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0) {
        imagePicker = [[UIImagePickerController alloc] init];
        [imagePicker setDelegate:self];
        [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
        [self.navigationController presentModalViewController:imagePicker animated:YES]; 
    } else if (buttonIndex == 1) {
        imagePicker = [[UIImagePickerController alloc] init];
        [imagePicker setDelegate:self];
        [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
        [self.navigationController presentModalViewController:imagePicker animated:YES];
    } else {
        // Cancel button code here
    }
}

Это делает это немного по-другому

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex != actionSheet.cancelButtonIndex) {
    imagePicker = [[UIImagePickerController alloc] init];
    [imagePicker setDelegate:self];
    if (buttonIndex == 0) {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
        [self.navigationController presentModalViewController:imagePicker animated:YES]; 
    } else if (buttonIndex == 1) {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
        [self.navigationController presentModalViewController:imagePicker animated:YES];
    }
} else {
    // Cancel button code goes here
}

}

Итак, сначала мы проверяем, что это не кнопка отмены, если мы не создаем UIImagePickerController, а затем используем ее в двух случаях, когда это требуется.Если это кнопка отмены, то она просто ничего не делает.

Это должно выглядеть немного счастливее.

0 голосов
/ 16 июля 2012

У меня было что-то вроде этой проблемы. Что я решил, изменив способ представления ActionSheet.

Я изменился с этого:

[actionSheetMedia showInView:self.view];

к этому:

[actionSheetMedia showInView:self.tabBarController.tabBar];

Теперь задержка и не отвечающая кнопка отмены больше не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...