2016-08-18 136 views
-1

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

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代码...等

感谢

editVC

+0

请出示您的视图控制器编码我的意思是,你加ColorImageView到的ViewController – user3182143

+0

我没有为我的VC任何代码呢。我希望能够首先区分哪些imageView是从自定义类中挖掘出来的。一旦完成,我可以使用协议将信息传递给我的VC。目前,当我按下图像时,我可以打印出如下图像..... 按下图像;目标= <(action = imagePressed :, target = )>> – user172902

+0

你在哪里设置图像? – user3182143

回答

1

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

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

工程就像一个魅力!非常感谢 – user172902

+0

非常感谢你的兄弟 – user3182143

+0

不客气:-) – user3182143