Почему кнопка отмены в моем средстве выбора медиафайлов не работает?

Я новый разработчик и знакомлюсь с музыкой и звуком в iOS.

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

- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

Я попытался поместить в него NSLog, чтобы увидеть, действительно ли он вызывается, и в консоли ничего не было, поэтому на самом деле он вообще не вызывается. Есть ли причина и решение, которое можно сделать с этой информацией? Я просто что-то пропустил или мог не сделать что-то в другом месте?

Любая помощь будет принята с благодарностью.

Если код, который я использовал для средства выбора мультимедиа, был бы полезен, вот он:

MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];

        [mediaPicker setDelegate:self];

        mediaPicker.prompt = NSLocalizedString(@"text1", "text2");

        [self presentViewController:mediaPicker animated:YES completion:nil];

person Invalid Memory    schedule 09.07.2013    source источник
comment
Вы добавили объявление MPMediaPickerControllerDelegate в свой файл @implementation .h?   -  person Michael Dautermann    schedule 09.07.2013
comment
Выпускается ли «я», когда отображается средство выбора медиа?   -  person Wain    schedule 09.07.2013
comment
Майкл Даутерманн: Вы имеете в виду вот так? @interface SoundViewController : UITableViewController <MPMediaPickerControllerDelegate> Если да, то я это сделал. Уэйн: Я использую ARC, это может быть проблемой? Я не знаю, когда «я» будет выпущено.   -  person Invalid Memory    schedule 09.07.2013


Ответы (2)


Интересно, нужно ли вам делать:

- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker
{
    [mediaPicker dismissViewControllerAnimated:YES completion:nil];
}

вместо?

Кроме того, установите точку останова в вашем методе "mediaPickerDidCancel" и просто посмотрите, как точка останова срабатывает даже при нажатии кнопки отмены в средстве выбора.

person Michael Dautermann    schedule 09.07.2013
comment
Я попробовал ваше первое предложение изменить «я», но это ничего не изменило. Что касается вашего второго предложения, я знаю, как добавить точку останова, но я не знаю, как узнать, сработала ли она. Можете ли вы сказать мне, как это сделать? - person Invalid Memory; 09.07.2013
comment
если вы добавите точку останова в строку dismissViewControllerAnimated: YES, остановится ли выполнение приложения, когда вы нажмете кнопку отмены в средстве выбора? - person Michael Dautermann; 09.07.2013
comment
Нет, это не так, он по-прежнему просто ничего не делает. Приложение продолжает работать. Я не знаю, может ли это повлиять на что-либо, но я использую его в UITableView с помощью контроллера навигации. Может там что-то идет не так? - person Invalid Memory; 10.07.2013

В Свифте:

func mediaPickerDidCancel(mediaPicker: MPMediaPickerController){
    // Dismiss the picker if the user canceled
    dismissViewControllerAnimated(true, completion: nil)
}
person Thomas Danlerb    schedule 19.04.2016
comment
Для Swift 3 вам понадобится func mediaPickerDidCancel(_ mediaPicker: MPMediaPickerController) - person sdsykes; 04.04.2017