2016-12-13 6 views
0

Я начинаю следовать инструкциям Swift, предлагаемым Apple. В один шаг с помощью распознавателя жестов. При нажатии на изображение следует ссылаться на фотобиблиотеку. Но вместо того, следующее сообщение шоу:Ошибка Xcode при использовании распознавателя жестов жесты

enter image description here

Я использовал пример код официального ответа и те же проблемы всплывает. Так что, я думаю, это не проблема с кодом?

+2

введите код here –

+0

Что-то не так с вашим кодом. –

+0

Красная линия означает, что ваше приложение разбилось. Изображение, которое вы разместили, не отражает фактическую ошибку, вместо этого загрузите изображение своего отладчика. И, задавая вопрос, если вы не знаете, что вызывает проблему, будет лучше поставить код тоже. Так что мы можем видеть, что вы сделали до сих пор. –

ответ

0

Попробуйте один

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

Затем следует реализовать обработчик, который будет вызываться каждый раз, когда происходит событие водопроводное:

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

Так теперь называет водопроводный жест распознаватель обработчика события так же просто, как вызов метода 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) 

}