iOS 6 の新しいアクションシート機能を UIActivityViewController で実装する

October 12, 2012

iOS 6 から Safari やカメラロールなどのアクションボタンをタップすると、タイル状に並んだアイコンから [Twitter や Facebook への共有機能などが呼び出せるようになりました。
下記のように、OS標準以外のアプリにもこの機能を簡単に追加できます。
f:id:tilfin:20121012204812j:image

このアクションシートの機能は UIActivityViewController に集約されているので、これを呼び出すだけです。ただ単純にコピペ実装できるエントリが見つからなかったので紹介しておきます。

上記のように、よくある Twitter, Facebook などにテキストとURLを投稿するときの方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (IBAction)actionButtonPressed:(id)sender
{
NSString *ttl = @"Tosshi Note";
NSURL *url = [NSURL URLWithString:@"http://d.hatena.ne.jp/tilfin/"];

NSArray *activityItems = [NSArray arrayWithObjects:ttl, url, nil];
UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:nil];

[self presentViewController:activityView animated:YES completion:^{
}];

[activityView release];
}

UIActivityViewController の initWithActivityItems:applicationActivities: メソッドを使って、activityItems には NSString と NSURL を NSArray にまとめて渡します。
applicationActivities には、独自のアクティビティ(機能)を渡すことでさらに追加できます。今回は、システムの標準に従って表示させるため、nil にしています。
表示させたくないアクティビティは、excludedActivityTypes プロパティに、以下の Built-in Activity Types 定数を使って NSArray でセットします。
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html Built-in Activity Types の項には、それぞれアクティビティの説明に activityItems に指定できるリソースが書かれています。

iOS iPhone

tilfin freelance software engineer