5

Facebook / Twitter / Emailでテキストと画像を共有するUIActivityViewControllerがありますが、iOS 6以降でのみ機能します。デバイスで実行されているiOSバージョンを取得し、IFステートメントを実行してクラッシュを回避することは可能ですか? iOS 5?iOS6の場合は、次のコードを実行します。それ以外の場合は、他のことを実行します...?

-(void)shareMenu
{
    NSString *textToShare = @"Text that will be shared";
    UIImage *imageToShare = [UIImage imageNamed:@"share_picture.png"];
    NSArray *itemsToShare = [[NSArray alloc] initWithObjects:textToShare, imageToShare, nil];
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
    activityVC.excludedActivityTypes = [[NSArray alloc] initWithObjects: UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeMessage, UIActivityTypePostToWeibo, nil];
    [self presentViewController:activityVC animated:YES completion:nil];
}
4

3 に答える 3

25
if( [UIActivityViewController class] ) {
     NSString *textToShare = @"Text that will be shared";
    UIImage *imageToShare = [UIImage imageNamed:@"share_picture.png"];
    NSArray *itemsToShare = [[NSArray alloc] initWithObjects:textToShare, imageToShare, nil];
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
    activityVC.excludedActivityTypes = [[NSArray alloc] initWithObjects: UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeMessage, UIActivityTypePostToWeibo, nil];
    [self presentViewController:activityVC animated:YES completion:nil];
}

またはより良い使用

if( NSClassFromString (@"UIActivityViewController") ) {

}

これを読む

于 2012-12-05T20:47:29.230 に答える
4

これを行うにはいくつかの方法がありますが、最も簡単な方法は、おそらくこのクラスの存在をテストすることです。

if ([UIActivityViewController class])
  //iOS 6+
else 
  // < iOS 6
于 2012-12-05T20:48:16.020 に答える
0

[[UIDevice currentDevice] systemVersion]これを使用すると、現在のオペレーティングシステムの文字列が返されることを検討する必要があります。マクロを簡単に記述して、バージョンが少なくとも指定された数であるかどうかを確認できます。

于 2012-12-05T20:48:01.360 に答える