

カメラアクセスと写真のアップロードが実機でできません。  
plistに

[code]

    <dict>
    <key>UILaunchStoryboardName</key>
    <string></string>
    <key>CFBundleGetInfoString</key>
    <string></string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>フォトライブラリの使用許可をお願いします</string>
    <key>CFBundleDisplayName</key>
    <string></string>
    <key>NSCameraUsageDescription</key>
    <string>カメラの使用許可をお願いします</string>
    <key>LSApplicationCategoryType</key>
    <string></string>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UIMainStoryboardFile</key>
    <string>Main</string>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
    <string>armv7</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    </dict>
    
[/code]

と書き、  
コントローラには

[code]

    import UIKit
    
    class SendController:UIViewController,
    UINavigationControllerDelegate,UIImagePickerControllerDelegate{
    
    //定数
    let ButtonCamera = 0
    let ButtomRead = 1
    let ButtonWrite = 2
    
    //変数
    var imageView:UIImageView = UIImageView()
    var btnCamera:UIButton = UIButton(type: .custom)
    var btnRead:UIButton = UIButton(type: .custom)
    var btnWrite:UIButton = UIButton(type: .custom)
    
    
    //ロード完了時に呼ばれる
    override func viewDidLoad() {
    super.viewDidLoad()
    
    // //カメラボタン生成
    // self.view.addSubview(btnCamera)
    // //読み込み
    // self.view.addSubview(btnRead)
    // // イメージビューの生成
    // self.view.addSubview(imageView)
    
    imageView.frame = CGRect(x: 150, y: 100, width: 200, height: 200)
    imageView.contentMode = .scaleAspectFit
    view.addSubview(imageView)
    
    btnCamera.frame = CGRect(x: 0, y: 100, width: 100, height: 100)
    btnCamera.setTitle("Camera", for: .normal)
    btnCamera.tag = ButtonCamera
    btnCamera.addTarget(self, action: #selector(self.onClick(sender:)), for: .touchUpInside)
    btnCamera.backgroundColor = UIColor.green
    self.view.addSubview(btnCamera)
    
    btnRead.frame = CGRect(x: 0, y: 200, width: 100, height: 100)
    btnRead.setTitle("Read", for: .normal)
    btnRead.tag = ButtomRead
    btnRead.addTarget(self, action: #selector(self.onClick(sender:)), for: .touchUpInside)
    btnRead.backgroundColor = UIColor.red
    self.view.addSubview(btnRead)
    
    btnWrite.frame = CGRect(x: 0, y: 300, width: 100, height: 100)
    btnWrite.setTitle("Write", for: .normal)
    btnWrite.tag = ButtonWrite
    btnWrite.addTarget(self, action: #selector(self.onClick(sender:)), for: .touchUpInside)
    btnWrite.backgroundColor = UIColor.blue
    self.view.addSubview(btnWrite)
    }
    
    //ボタンクリック時に呼ばれる
    func onClick(sender:UIButton){
    if sender.tag == ButtonCamera {
    openPicker(sourceType: UIImagePickerControllerSourceType.camera)
    }else if sender.tag == ButtomRead {
    openPicker(sourceType: UIImagePickerControllerSourceType.photoLibrary)
    }
    
    }
    
    //アラートの表示
    func showAlert(title: String?, text: String?) {
    let alert = UIAlertController(title: title, message: text, preferredStyle: UIAlertControllerStyle.alert)
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
    present(alert, animated: true, completion: nil)
    }
    
    //イメージピッカーのオープン
    func openPicker(sourceType:UIImagePickerControllerSourceType){
    if !UIImagePickerController.isSourceTypeAvailable(sourceType){
    showAlert(title: nil, text: "利用できません")
    return
    }
    
    //イメージピッカーの生成
    let picker = UIImagePickerController()
    picker.sourceType = sourceType
    picker.delegate = self
    
    //ビューコントローラーのビューを開く
    present(picker, animated: true, completion: nil)
    }
    
    // // イメージピッカーのイメージ取得時に呼ばれる
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let image = info[UIImagePickerControllerOriginalImage]as! UIImage
    imageView.image = image
    //ビューコントローラーのビューを閉じる
    picker.presentingViewController?.dismiss(animated: true,completion:nil)
    }
    
    // //イメージピッカーのキャンセル取得時に呼ばれる
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.presentingViewController?.dismiss(animated: true, completion: nil)
    }
    
    
    }
    
[/code]

と書きました。  
Xcodeから自分のiPhoneでアプリを起動したのですが  
Camera access ボタンとPhoto upload ボタンは自分のiPhoneで表示されたのですが  
それらは押せるだけしか機能がありません。Camera access
ボタンを押したら、iPhone（実機）のカメラが開いて写真が撮れて、撮った写真をアプリに表示させたいです。Photo upload
ボタンを押したら、iPhone（実機）のカメラロールが開き元からある写真の中から一枚を選べ、選択した写真をアプリに表示させたいです。どう直せば良いでしょうか？


CC BY-SA 3.0
2017-03-02T11:21:11.273
33041
2017-03-02T13:08:14.590
2017-03-02T13:08:14.590
20897
20897
question
swift
カメラアクセスと写真のアップロードが実機でできない