Partage via UIActivityViewController sur Twitter/Facebook etc. causant le crash
Sur iOS8 je suis en utilisant un UIActivityViewController pour partager une UIImage à Facebook/Twitter etc. Il semble fonctionner très bien, mais aujourd'hui, il a soudainement commencé de s'écraser lors de l'exécution du code sur mon iPad. Cependant, il fonctionne toujours comme prévu dans le simulateur.
Mon code:
UIActivityViewController *controller =
[[UIActivityViewController alloc]
initWithActivityItems:@[text, url, myImage]
applicationActivities:nil];
[self presentViewController:controller animated:YES completion:nil];
À s'écraser, Xcode crache:
Découvert extensions: {(
{id = com.apple.part.Facebook.post},
{id = com.apple.part.Twitter.post},
{id = com.apple.part.TencentWeibo.post},
{id = com.apple.part.SinaWeibo.post} )} pour les attributs: {
NSExtensionActivationRule = {
extensionItems = (
{
les pièces jointes = (
{
registeredTypeIdentifiers = (
"public.l'image"
);
},
{
registeredTypeIdentifiers = (
"public.texte brut"
);
},
{
registeredTypeIdentifiers = (
"public.url"
);
}
);
}
);
};
NSExtensionPointName = (
"com.apple.partager-services",
"com.apple.l'interface utilisateur de services",
"com.apple.services"
); } 2014-08-07 21:38:59.208 collageTest[279:11021] LaunchServices: invalidationHandler appelé 2014-08-07 21:38:59.212
collageTest[279:11016] Découvert extensions: {(
{id = com.apple.part.Flickr.post},
{id = com.apple.mobileslideshow.StreamShareService},
{id = com.apple.part.Twitter.post},
{id = com.apple.part.Facebook.post},
{id = com.apple.part.Vimeo.post},
{id = com.apple.part.SinaWeibo.post},
{id = com.apple.part.TencentWeibo.post} )} pour les attributs: {
NSExtensionPointName = "com.apple.partager-services"; } 2014-08-07 21:38:59.216 collageTest[279:11021] LaunchServices:
invalidationHandler appelé
OriginalL'auteur Christian J. B. | 2014-08-07
Vous devez vous connecter pour publier un commentaire.
Regardant les docs, j'avais besoin de définir une vue de source pour la liste contrôleur
J'ai essayé la même chose en Swift, mais Xcode force déballe popoverPresentationController, et quand je l'ai créer et d'exécuter, je vois encore la invalidationHandler question et il se bloque sur la découverte de popoverPresentationController néant. :/
Cela a fonctionné pour moi, j'aime presentationController.sourceRect afin de ne pas afficher dans le coin de l'écran.
meilleure réponse ..... thnks
OriginalL'auteur Christian J. B.
popoverPresentationController
était nouveau pour iOS 8 et se crash sur iOS 7. Il sera aussi nul sur l'iPhone parce que c'est seulement dans unUIPopover
sur iPad. Voici Chrétienne de la réponse rapide, avec ces faits pris en compte:Swift 2.0 (Xcode 7)
Swift 1.2 (Xcode 6)
Donc je suis en utilisant le respondsToSelector("popoverPresentationController"), mais quand je valide, iTunes rejette en disant que c'est un non-public sélecteur. Je suppose car il n'existe pas sur iOS 7 (c'est à dire de "non-public"), et notre application est censé fonctionner sur les deux 7 et 8. Quelle est la solution ici? Vérifiez la version iOS?
Avez-vous été incapable de proposer quelque chose pour l'App Store?
Dans Swift 2.0, vous pouvez maintenant utiliser
if #available(iOS 8.0, *) { ... }
merci! J'ai mis à jour.
OriginalL'auteur Andrew
@Mmccomb dit ici, sur iPad l'activité-vue-contrôleur seront affichés sous forme de liste à l'aide de la nouvelle UIPopoverPresentationController. Vous devez spécifier au moins la vue source:
Si vous souhaitez afficher la liste ancré à tout point de ce point de vue, le spécifier avec la sourceRect propriété de la popoverPresentationController.
OriginalL'auteur jomafer
Voici comment j'ai résolu avec swift:
Yup, Swift est compatible car il regroupe l'ensemble de la langue de l'exécution dans l'application elle-même. Les applications qui contiennent même une seule ligne de Swift sont ~5MO de plus grande taille.
Zut, je ne savais pas qu'ils étaient plus grandes. Est-il une ressource que vous pouvez lier à moi sur ce détails?
OriginalL'auteur Esqarrouth