使用 tapGesture 自定义 UIView
Posted
技术标签:
【中文标题】使用 tapGesture 自定义 UIView【英文标题】:Custom UIView with tapGesture 【发布时间】: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 时,我可以打印出如下内容..... 按下图像您可以轻松获取标签。它工作正常。
func imagePressed(gestureRecognizer: UITapGestureRecognizer)
print("image pressed \(gestureRecognizer)")
let tappedImageVIew = gestureRecognizer.view as! UIImageView
print("image pressed \(tappedImageVIew.tag)")
【讨论】:
像魅力一样工作!非常感谢以上是关于使用 tapGesture 自定义 UIView的主要内容,如果未能解决你的问题,请参考以下文章
swift自定义上下文菜单previewprovider不能点击里面的任何视图(使用tapgesture)
使用 UITapGestureRecognizer 和两个按钮查看
UICollectionViewCell 上的不需要的 UIView(TapGesture 不起作用)
如何在 UIView 中为 UIImageView 添加 tapGesture