参考書の通りに以下のコードを打ったのですが
撮影した写真をTwitterに投稿することができません。
どこか間違っているのでしょうか・・・・。
教えてください。
Swift
1import UIKit 2 3class ViewController: UIViewController , UINavigationControllerDelegate , UIImagePickerControllerDelegate { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view. 8 } 9 10 @IBOutlet weak var pictureImage: UIImageView! 11 12 13 // カメラを起動するをタップすると起動 14 @IBAction func cameraButtonAction(_ sender: Any) { 15 // カメラが利用可能かチェック 16 if UIImagePickerController.isSourceTypeAvailable(.camera) { 17 print("カメラは利用できます") 18 // (1)UIImagePickerControllerのインスタンスを作成 19 let imagePickerController = UIImagePickerController() 20 // (2)sourceTypeにcameraを設定 21 imagePickerController.sourceType = .camera 22 // (3)delegate設定 23 imagePickerController.delegate = self 24 // (4)モーダルビューで表示 25 present(imagePickerController, animated: true, completion: nil) 26 } else { 27 print("カメラがは利用できません") 28 } 29 } 30 31 // SNSに投稿するをタップすると実行 32 @IBAction func shareButtonAction(_ sender: Any) { 33 // 表示画像をアンラップしてシェア画像を取り出す 34 if let shareImage = pictureImage.image { 35 // UIActivityViewControllerに渡す配列を作成 36 let shareItems = [shareImage] 37 // resizeをする 38 39 // UIActivityViewControllerにシェア画像を渡す 40 let controller = UIActivityViewController(activityItems: shareItems, applicationActivities: nil) 41 //iPadで落ちてしまう対策 42 controller.popoverPresentationController?.sourceView = view 43 //UIActivityViewControllerを表示 44 present(controller, animated: true, completion: nil) 45 } 46 } 47 48 // (1)機能が終わったあとに呼ばれるdelegateメソッド 49 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey : Any]){ 50 // (2)撮影した画像を配置したpictureImageに渡す 51 pictureImage.image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage 52 // (3)モーダルビューを閉じる 53 dismiss(animated: true, completion: nil) 54 } 55 56}
前回も指摘いたしましたが、参考になさっている書籍名(「たった2日でできる..」だと思いますが)をご質問本文にご記入いただければと思います。
ところで、このコードで間違いありません。
私の環境だときちんと Twitter に投稿できました。
ところで、lucia0320が試された環境には Twitter は入っていますでしょうか。Twitter社によるTwitterアプリです。
申し訳ございません。なんとなく書籍名を書くのが憚れまして・・・。
はい、Twitterは入っています。毎日やっておりますので・・・。
iPhone7でiOSは最新(13.5.1)です。
SNSに投稿を押して、Twitterアイコンを押すと
一瞬Twitterアプリの投稿画面になるのですが、また共有画面(アイコン選択画面)に戻ってしまいます。
ちなみにLINEの共有はできました。
投稿していただいたコードを使いそのままビルドし、実機で動作させて確認したのですが、Twitter に投稿する画面まで出てきますし、実際に投稿もできました。
質問者さんの環境だと、投稿画面にもならない、ということでしょうか。
それとも、投稿画面切り替わるが、その画面がすぐにきえてしまうということでしょうか。
「また共有画面(アイコン選択画面)に戻ってしまいます」ということなので、後者のほうかとは思いますが。
LINEに投稿できるのであれば、Twitter側の問題かもしれません。私のTwitterはバージョン8.26です。
しかし、もしTwitterに投稿できなければ支障がある、ということでなければ、同じような共有を使うLINEでは実行できていますので、現時点では問題据え置きということでいかがでしょうか。
この問題の解決に労力を避けるよりも、次のレッスンに進まれた方が実益があるかとおもいます。
ちなみに、書籍名はご面倒でも都度書かれた方が良いかと思います。
時々、書籍などの教材に問題があることもありますので。
分かりました。ありがとうございます。
次回から書籍名を明記いたします。
ちなみに下記のエラーがTwitterアイコンを押したときに出ていたのですが参考になりますでしょうか。
2020-07-15 10:03:25.962046+0900 MyCamera[18359:2286135] [core] SLRemoteComposeViewController: (this may be harmless) viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}
2020-07-15 10:03:25.962137+0900 MyCamera[18359:2286135] viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}
また、これが原因かわからないのですが
調べていたら下記のサイトを見つけました。
https://qiita.com/iceApp/items/658f5ccf27f99ce64867
当該サイトでは画像のリサイズをするとのことで
下記のコードを追加したのですが、私の書き方が悪いのかエラーになってしまいます・・・。
let resizeImage = shareItems?.fixedOrientation()?.shareItems()
>>次回から書籍名を明記いたします。
今回から記載して下さい。
回答1件
あなたの回答
tips
プレビュー