gpt4 book ai didi

ios - UITapGestureRecognizer 未正确触发

转载 作者:行者123 更新时间:2023-11-28 11:01:51 25 4
gpt4 key购买 nike

我是 iOS 开发的新手,我正在按照 Apple 的应用程序开发教程学习,所以请多多包涵。我目前正在 XCode 8 上使用 Swift 3 进行开发

我在教程中将 UITapGestureRecognizer 连接到 Storyboard上的 ImageView 。我已经编写了代码来实现从库中挑选照片并将其放入 ImageView 的操作。当我运行模拟并单击 ImageView 时,没有弹出窗口询问应用程序访问照片或任何内容。下面是我写的代码

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"
}

这是我点击 ImageView 前后的控制台输出

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 中,但也没有骰子。

UIImagePickerController crashes app | Swift3, Xcode8

如何让照片库弹出?

最佳答案

您是否已将 isUserInteractionEnabled 设置为 true

self.photoImageView.isUserInteractionEnabled = true

如果您已将一切设置得很好且公平,您可能会错过这一步。当您点击 photoImageView 时,还可以使用 Debugger 检查 selectImageFromPhotoLibrary 函数是否包含 Debugger。

为了通过代码设置点击手势,将其写入您的 ViewController 类。

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

func selectImageFromPhotoLibrary(sender:UITapGestureRecognizer) {
//open photo library code here
}

关于ios - UITapGestureRecognizer 未正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40245874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com