LoginSignup
47
46

More than 5 years have passed since last update.

Swift で UIActivityViewController を利用してfacebookやTwitterにシェアをする

Posted at

Safari などでシェアボタンを押すとTwitter や Facebook へのシェアができるようになっています。これを実装したいと思って調べました。
※ ちなみに、Storyboardを使っています

share.gif

UIActivityViewController を利用する

アプリケーションからTwitter などのシェアボタン(って言うのかわからないですが…)を呼び出す場合は、UIActivityViewController を利用します

UIButton で呼び出す

UIbutton(ここでは ButtonShare )にaddTarget で、function を呼び出します。

ButtonShare.addTarget(self, action: "share_action:", forControlEvents: .TouchUpInside)

UILongPressGestureRecognizer で呼び出す

画像を長押しのときも、呼び出したいです。

// 長押し
var myLongPressGesture = UILongPressGestureRecognizer(target: self, action: "lognPress:")

// 長押し - 2.0秒
myLongPressGesture.minimumPressDuration = 2.0
// 長押し - 許容範囲15px
myLongPressGesture.allowableMovement = 150

// 画像に長押しがあったときの対応
SampleImage.userInteractionEnabled = true
SampleImage.addGestureRecognizer(myLongPressGesture)

ツィートした結果

ソース(Swift)

Social を import するのを忘れずに。

import UIKit
import Social

class DetailViewController: UIViewController {

    @IBOutlet weak var detailDescriptionLabel: UILabel!
    @IBOutlet weak var ButtonShare: UIButton!
    @IBOutlet weak var SampleImage: UIImageView!

    func configureView() {
        if let detail: AnyObject = self.detailItem {
            if let label = self.detailDescriptionLabel {
                label.text = detail.description
            }
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.configureView()

        // 長押し
        var myLongPressGesture = UILongPressGestureRecognizer(target: self, action: "lognPress:")

        // 長押し - 2.0秒
        myLongPressGesture.minimumPressDuration = 2.0

        // 長押し - 許容範囲15px
        myLongPressGesture.allowableMovement = 150

        // 画像に長押しがあったときの対応
        SampleImage.userInteractionEnabled = true
        SampleImage.addGestureRecognizer(myLongPressGesture)

        // share
        ButtonShare.addTarget(self, action: "share_action:", forControlEvents: .TouchUpInside)
    }

    func lognPress(sender: UILongPressGestureRecognizer) {
        println("lognPress")
        share_action(self)
    }

    func share_action(sender: AnyObject) {
        println("share_action")

        let secondActivityItem = "iOSからのテストです #桜"
        let firstActivityItem:UIImage = SampleImage.image! as UIImage

        let activityViewController = UIActivityViewController(
            activityItems: [firstActivityItem, secondActivityItem],
            applicationActivities: nil)


        activityViewController.completionWithItemsHandler = {(activityType, completed:Bool, returnedItems:Array!, error:NSError!) in
            if (completed) {
                // ここに完了後の処理を書く
                println("完了!")
            }
        }

        self.presentViewController(activityViewController, animated: true, completion: nil)
    }

実行環境

  • Xcode 6.0
  • iOS 8
47
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
46