2016-10-25 8 views
0

私はiOS開発の新機能を使用しています。私は現在、XCode 8のSwift 3で開発中です。UITapGestureRecognizerが適切に起動していません

私はストーリーボードの画像ビューにUITapGestureRecognizerを接続したチュートリアルのポイントにいます。私は、ライブラリから写真を取り出してイメージビューに配置するアクションを実装するコードを書いています。シミュレーションを実行して画像ビューをクリックすると、写真やその他のものにアクセスすることをアプリに要求するポップアップは表示されません。以下は、私がここで

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 


// MARK: Properties 
@IBOutlet weak var mealNameLabel: UILabel! 
@IBOutlet weak var nameTextField: UITextField! 
@IBOutlet weak var photoImageView: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    // Handle the text field´s user input through delegate callbacks 
    nameTextField.delegate = self 
} 

// MARK: UITextFieldDelegate 
func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    // Hide the keyboard. 
    textField.resignFirstResponder() 
    return true 
} 

func textFieldDidEndEditing(_ textField: UITextField) { 
    mealNameLabel.text = textField.text 
} 

// MARK: UIImagePickerControllerDelegate 
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    // Dismiss the picker if the user canceled. 
    dismiss(animated: true, completion: nil) 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    // The info dictionary contains multiple representations of the image, and this uses the original. 
    let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage 

    // Set photoImageView to display the selected image. 
    photoImageView.image = selectedImage 

    // Dismiss the picker. 
    dismiss(animated: true, completion: nil) 
} 


// MARK: Actions 

@IBAction func selectImageFromPhotoLibrary(_ sender: UITapGestureRecognizer) { 
    // Hide the keyboard. 
    nameTextField.resignFirstResponder() 

    // UIImagePickerController is a view controller that lets a user pick media from their photo library. 
    let imagePickerController = UIImagePickerController() 

    // Only allow photos to be picked, not taken. 
    imagePickerController.sourceType = .photoLibrary 

    // Make sure ViewController is notified when the user picks an image. 
    imagePickerController.delegate = self 

    present(imagePickerController, animated: true, completion: nil) 
} 

@IBAction func setDefaultLabelText(_ sender: UIButton) { 
    mealNameLabel.text = "Default Text" 
} 

}

を書かれているコードは、コンソール出力が前にあると私はイメージ図下のポストから基づい

2016-10-25 13:11:05.115607 TestApp1[17930:1007384] subsystem: com.apple.UIKit, category: GestureEnvironment, enable_level: 0, persist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 
2016-10-25 13:11:05.116342 TestApp1[17930:1007384] subsystem: com.apple.UIKit, category: GestureExclusion, enable_level: 0, persist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 

をクリックした後、私はまた、選択しているとinfo.plistに "Privacy - Photo Library Usage Description"キーを追加しましたが、ダイスも追加しませんでした。私は写真のライブラリがポップアップする取得できますか

UIImagePickerController crashes app | Swift3, Xcode8

+0

タップジェスチャーを作成して設定するコードはどこですか? – rmaddy

+0

認識プログラムをコントローラにバインドしましたか? –

+0

@rmaddy私はあなたが探しているものは、コードの下にあるselectImageFromPhotoLibraryという関数名の下にあると推測しています。 – LampPost

答えて

3

isUserInteractionEnabledを有効にしましたか?

self.photoImageView.isUserInteractionEnabled = true 

すべての設定がきれいであれば、この手順が不足している可能性があります。また、photoImageViewをタップしたときにデバッガが入ってくるかどうかは、デバッガを使用してselectImageFromPhotoLibraryの機能をチェックしてください。

タップジェスチャーをコードで設定するには、ViewControllerクラスに書き込みます。

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(selectImageFromPhotoLibrary)) 
self.photoImageView.addGestureRecognizer(tapGesture) 

func selectImageFromPhotoLibrary(sender:UITapGestureRecognizer) { 
    //open photo library code here 
} 
関連する問題