2016-12-22 9 views
2

ユーザーが共有ボタンをクリックしたときにpopoverPresentationControllerを表示したいとします。私は共有ボタンのアクションシートを使用しました。ここ は、それがiPad上で動作していないです私のコードです:UIActivityViewControllerがiPadで動作していませんか?

NSString *aText = @"Some Text"; 

    NSURL *aUrl = [NSURL URLWithString:@"www.demo.com"]; 

    NSArray *objectsToShare = @[aText,aUrl]; 
    NSArray * applicationActivities = nil; 

    UIActivityViewController * activityViewController = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:applicationActivities]; 

    activityViewController.excludedActivityTypes = @[ 
                UIActivityTypePostToWeibo, 
                UIActivityTypeAssignToContact, 
                UIActivityTypeAirDrop, 
                UIActivityTypeAddToReadingList, 
                UIActivityTypeCopyToPasteboard, 
                UIActivityTypeSaveToCameraRoll, 
                UIActivityTypePrint, 
                UIActivityTypePostToFlickr, 
                UIActivityTypePostToTencentWeibo,]; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
     [self presentViewController:activityViewController animated:YES completion:nil]; 
    } 
    else { 

     UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
     [popup presentPopoverFromRect:CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/4 + 20, 0, 0)inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

    } 

それはiPadの(画面上に表示なし)に間違っているのです。だから私はそれをどのように解決できますか?

答えて

2

はい、私はそれを得て、私の問題を解決しました。

iPadの場合、アクティビティビューコントローラはpopoverPresentationControllerを使用してポップオーバーとして表示され、表示ポップアップにはUIAlertControllerが使用されます。

UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 

[actionSheet addAction:[UIAlertAction actionWithTitle:@"Share" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 

NSString *aText = @"Some Text"; 

NSURL *aUrl = [NSURL URLWithString:@"www.demo.com"]; 

NSArray *objectsToShare = @[aText,aUrl]; 
NSArray * applicationActivities = nil; 

UIActivityViewController * activityViewController = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:applicationActivities]; 

activityViewController.excludedActivityTypes = @[ 
               UIActivityTypePostToWeibo, 
               UIActivityTypeAssignToContact, 
               UIActivityTypeAirDrop, 
               UIActivityTypeAddToReadingList, 
               UIActivityTypeCopyToPasteboard, 
               UIActivityTypeSaveToCameraRoll, 
               UIActivityTypePrint, 
               UIActivityTypePostToFlickr, 
               UIActivityTypePostToTencentWeibo,]; 

     UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
     [popup presentPopoverFromRect:CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/4 , 0, 0)inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

    }]]; 

    actionSheet.popoverPresentationController.sourceView = self.view; 
    actionSheet.popoverPresentationController.sourceRect = CGRectMake(self.view.frame.size.width, btn.frame.origin.y +btn.frame.size.height , 0, 0); 
    actionSheet.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp; 

    [self presentViewController:actionSheet animated:YES completion:nil]; 
関連する問題