UIActivityViewController problème iOS 7 et iOS 8?
Je suis en train de construire un article de la lecture de l'app pour iPad. J'ai intégré un partage sur les réseaux sociaux fonctionnalité qui signifie que l'utilisateur peut partager des articles sur Facebook, et google mail.
Je suis en utilisant UIActivityViewController
pour le partage.
Il y a un bouton de la barre d'élément,lorsque l'utilisateur clic sur la UIActivityViewController
s'ouvre.J'ai mis à jour Xcode 6
Quand je le lance sur simulateur, il fonctionne très bien Mais j'ai exécuté sur un périphérique réel(iPad) avec iOS 7,l'application d'obtenir le blocage sur la cliquant sur sur le bouton de barre d'élément.
c'est mon code:
- (IBAction)ysshareAction:(id)sender
{
NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url
NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc] initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
[stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0, stringText.length)];
NSArray * itemsArray = @[[NSString stringWithFormat:@"%@",_DetailModal1[0]], [NSURL URLWithString:_DetailModal1[4]]];
NSArray * applicationActivities = nil;
UIActivityViewController * AVC = [[UIActivityViewController alloc] initWithActivityItems:itemsArray applicationActivities:applicationActivities];
AVC.popoverPresentationController.sourceView = _webView;
[self presentViewController:AVC animated:YES completion:nil];
[AVC setCompletionHandler:^(NSString *act, BOOL done)
{
if([act isEqualToString:UIActivityTypeMail]) {
ServiceMsg = @"Mail sent!";
} else if([act isEqualToString:UIActivityTypePostToTwitter]) {
ServiceMsg = @"Article Shared!";
} else if([act isEqualToString:UIActivityTypePostToFacebook]) {
ServiceMsg = @"Article Shared!";
} else if([act isEqualToString:UIActivityTypeMessage]) {
ServiceMsg = @"SMS sent!";
} else if([act isEqualToString:UIActivityTypeAddToReadingList]) {
ServiceMsg = @"Added to Reading List";
} else if([act isEqualToString:UIActivityTypeCopyToPasteboard]){
ServiceMsg = @"Copied Link";
}
if ( done )
{
UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[Alert show];
}
}];
}
Aide est très appréciée!
OriginalL'auteur Daljeet | 2014-09-25
Vous devez vous connecter pour publier un commentaire.
Ligne suivante est la question
Que vous aurez à mettre iOS8 condition afin de
popoverPresentationController
est introduit pour iOS 8 et, plus tard, de sorte que vous ne pouvez pas l'utiliser avec iOS 7Pour la vérification de iOS8, vous pouvez définir une macro comme constaté à partir de ici
Et de l'utiliser dans la suite.
Reportez-vous cette pour plus d'informations sur ce qui a changé pour
UIActivityViewController
dans iOS8Juste un min permettez-moi de modifier
Veuillez vérifier mes édité réponse , une macro utilisée pour vérifier si la version iOS est supérieure ou égale à 8,0
merci,sa fonctionne très bien.
Voici la façon de le faire dans swift: stackoverflow.com/a/25895667/1710002
OriginalL'auteur Bhumit Mehta
Beaucoup diront que la vérification de l'existence de la classe explicitement est mieux que de vérifier une codés en dur numéro de version. UIPopoverPresentationController peut être obsolète dans le futur, il pourrait y avoir un (futur ?) appareil qui ne prend pas en charge la classe, à l'instar de l'iPhone n'a jamais utilisé à l'appui de UIPopoverController ou UISplitViewController..
NSObject class
méthode. Dans ce cas:if ([UIPopoverPresentationController class]) {...}
L'avantage est que vous obtenez un compilateur vérification de type.OriginalL'auteur Jef
Dans Swift, Vous pouvez utiliser le '?' au lieu de vérification de version de l'OS.
AVC.popoverPresentationController?.sourceView = _webView
OriginalL'auteur kalpeshdeo