簡體   English   中英

使用點擊手勢識別器時出現Xcode錯誤

[英]Xcode error when using tap gesture recognizer

我開始關注Apple提供的Swift教程。 使用點擊手勢識別器的一步。 點擊圖像時,應鏈接到照相館。 但是,將顯示以下消息:

在此處輸入圖片說明

我使用了官方答案的示例代碼,並且彈出了相同的問題。 所以我想這不是代碼問題嗎?

試試這個

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

然后,您應該實現處理程序,該處理程序將在每次tap事件發生時調用:

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

因此,現在調用輕handleTap()手勢識別器事件處理程序就像調用方法handleTap()一樣簡單。

不確定,但是錯誤是否是由於點擊手勢引起的。 您可以嘗試:

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

view.addGestureRecognizer(enableTap)

view.userInteractionEnabled = true

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

我的代碼:(很抱歉,回復評論太長了)

導入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)

}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM