У меня есть приложение, в котором есть кнопка общего доступа. Эта кнопка share загружает UIActivityViewController для доступа к Facebook, Twitter, электронной почте, текстовому сообщению и т. Д.UIActivityViewController, действия не выполняются, параметры совместного доступа не загружаются
Он работал нормально, и я думаю, что он все еще отлично работает на симуляторе, но на устройствах появляется контроллер вида с все правильные параметры, и если вы нажмете один, либо ничего не произойдет, либо, если это Mail, загружается модальный вид почты, а затем отклоняется. Затем я получаю свой журнал «Активность не выполнялась». Это когда блок завершения возвращает false для завершенного, но activityType не был нулевым. Так что он распознает выбор, но он не загружает активность в представление по какой-то причине
Я проверил вещи, которые я пытаюсь разделить, даже заменил его фиктивным материалом (как показано ниже), все еще не повезло. Я использую обычное устройство, у меня установлены мои учетные записи в Twitter, Mail и Facebook, также работает текстовый ввод. Единственное, что работает, это копирование (т. Е. При копировании содержимого общего содержимого в буфер обмена). В других приложениях на одном и том же устройстве UIActivityViewController и загрузка выбранных действий работают нормально. Такая же проблема наблюдается и на других устройствах, запускающих приложение.
Действительно не понимаю, в чем проблема. Очень недоумение! Любая помощь или предложения о том, что нужно попробовать, будут высоко оценены. Я не вижу возможности отладить эту проблему.
Вот код: (заметьте, я не пытался извлекать изображения, а также, не повезло)
- (void)shareTapped {
NSString *shareText = @"Testing";//[self shareText];
NSURL *url = [NSURL URLWithString:@"http://www.google.ca"]; //[self shareURL];
NSArray *activityItems = [NSArray arrayWithObjects:shareText,url, self.shareImage, nil];
UIActivityViewController *shareDrawer = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
shareDrawer.excludedActivityTypes = @[UIActivityTypePostToWeibo,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypePrint];
shareDrawer.completionHandler = ^(NSString *activityType, BOOL completed) {
if (completed) {
NSLog(@"Selected activity was performed.");
} else {
if (activityType == NULL) {
NSLog(@"User dismissed the view controller without making a selection.");
} else {
NSLog(@"Activity was not performed.");
}
}
NSString *result = completed ? @"success" : @"fail";
if (activityType == NULL) {
result = @"dismissed";
}
};
[self presentViewController:shareDrawer animated:YES completion:nil];
}
вы пробовали вместо добавления данных в виде отдельных элементов в массиве, реализация протокола UIActivityItemSource на объекте, который находится в массиве? не уверен, действительно ли это по-другому отличается от вашего случая, поскольку это звучит так, как будто его неудача заключается в представлении представления, но я думаю, что это стоит того, чтобы изменить способ подачи данных. – bolnad
Я поставил почти такой же код в другое, гораздо более простое приложение, над которым я работаю, и он отлично работает ... Что может быть испорчено в моем приложении? – shim
Также попытался поставить UIActivityViewController внутри другого контроллера представления моего проблемного приложения, и это не сработало. – shim