【问题标题】:Custom UIView with tapGesture使用 tapGesture 自定义 UIView
【发布时间】:2016-08-18 12:32:54
【问题描述】:

我有一个绘图应用程序。在我的 VC 里面有五个 imageViews,里面有五种颜色。我希望能够单击 imageView 并更改笔触颜色。如果我通过向每个 UIImageView 添加手势识别器并具有它们各自的“选择器”功能来在视图控制器中重复自己,则可以轻松完成。比如

func redTapped() {}
func blueTapped() {}

但是,我希望能够通过为这些 ImageViews 创建自定义类 (ColorImageView.Swift) 来使代码更清晰,这样当我将类分配给这些按钮时,它们会自动获取点击手势和我的 VC接收关于哪个被窃听的信息。目前,我可以为分配给我的班级的每张图像打印一个“imagePressed”。但是,我无法区分被按下的是哪一个。下面是我的 ColorImageView.Swift 代码

import Foundation

class ColorImageView: UIImageView {

    private func initialize() {
        let touchGesture = UITapGestureRecognizer(target: self, action: #selector(ColorImageView.imagePressed(_:)))
        touchGesture.numberOfTapsRequired = 1
        self.userInteractionEnabled = true
        self.addGestureRecognizer(touchGesture)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        initialize()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        initialize()
    }

    func imagePressed(gestureRecognizer: UITapGestureRecognizer) {
        print("image pressed \(gestureRecognizer)")
    }
}

我的 imageView 名称是 red.png、green.png、blue.png...等

谢谢

【问题讨论】:

  • 请显示您的 ViewController 编码我的意思是您将 ColorImageView 添加到 ViewController
  • 我的 VC 还没有任何代码。我希望能够首先区分哪个 imageView 是从自定义类中提取的。完成后,我可以使用协议将信息传递给我的 VC。目前,当我按下 imageView 时,我可以打印出如下内容..... 按下图像 ; target= )>>
  • 图片是在哪里设置的?
  • 我的图像位于我的 EditImageViewController 中,并在 VC 中声明了 IBOutletes。附上VC IBOutlet weak var redImageView: ColorImageView的截图!
  • 请显示附加的屏幕截图

标签: ios objective-c swift uiimageview uitapgesturerecognizer


【解决方案1】:

您可以轻松获取标签。它工作正常。

func imagePressed(gestureRecognizer: UITapGestureRecognizer)
{
   print("image pressed \(gestureRecognizer)")
   let tappedImageVIew = gestureRecognizer.view as! UIImageView
   print("image pressed \(tappedImageVIew.tag)")
}

【讨论】:

  • 像魅力一样工作!非常感谢
猜你喜欢
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多