2016-12-13 7 views
0

Appleが提供しているSwiftチュートリアルの提案に従います。タップジェスチャ認識器を使用する1つのステップ。画像をタップするときは、photoLibraryにリンクする必要があります。しかし、その代わりに、次のメッセージショー:私は公式の答えと同じ問題で、サンプルコードを使用しているタップジェスチャ認識機能を使用するとXcodeエラーが発生する

enter image description here

がポップアップ表示されます。だから私はそれがコードの問題ではないと思いますか?

func handleTap(sender: UITapGestureRecognizer? = nil) { 
    // handling code 
} 

をだから今、あなたのタップジェスチャー認識のイベントハンドラを呼び出す:

+2

コードを入力してくださいここをクリック –

+0

コードに何か問題があります。 –

+0

赤い線は、アプリがクラッシュしたことを意味します。投稿した画像に実際のエラーは反映されず、代わりにデバッガの画像をアップロードしてください。問題を引き起こす原因がわからない場合は質問をしながら、コードを置く方が良いでしょう。これまでのことを見ることができます。 –

答えて

0

タップイベントが発生したときに毎回呼び出されるハンドラを実装する必要があり、その後、この1

let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
tap.delegate = self 
myView.addGestureRecognizer(tap) 

をお試しください方法を呼び出すのと同じくらい簡単ですhandleTap()

0

タップジェスチャーのためにエラーが発生しているかどうかわかりません。あなたはそれを試すことができます。

let enableTap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:))) 

view.addGestureRecognizer(enableTap) 

view.userInteractionEnabled = true 

func handleTap(_ sender: UITapGestureRecognizer) { 
    print("Success!!!") 
    } 
0

私のコード:(申し訳ありませんが、それはコメントに返信用長すぎる)

輸入のUIKit

クラスのViewController:のUIViewController、UITextFieldDelegate、UIImagePickerControllerDelegate、UINavigationControllerDelegate {

// MARK: Properties 

@IBOutlet weak var nameTextField: UITextField! 

@IBOutlet weak var mealNameLabel: UILabel! 

@IBOutlet weak var photoImageView: UIImageView! 


override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    // Handle the text field’s user input through delegate callbacks. 
    nameTextField.delegate = self 
} 

/*override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} */ 




// 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 : Any]) 
{ 
    // The info dictionary may contain multiple representations of the image. You want to use the original. 
    guard let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
    else 
    { 
     fatalError("Expected a dictionary containing an image, but was provided the following: \(info)") 
    } 

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

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

} 




// MARK: Actions 

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


@IBAction func selectImageFromPhotoLibrary(_ sender: Any) 
{ 
    // 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 
    // The type of imagePickerController.sourceType is known to be UIImagePickerControllerSourceType, which is an enumeration. This means you can write its value as the abbreviated form .photoLibrary instead of UIImagePickerControllerSourceType.photoLibrary. 

    // Make sure ViewController is notified when the user picks an image. 
    imagePickerController.delegate = self 
    present(imagePickerController, animated: true, completion: nil) 

} 

}

関連する問題