我正在尝试创建一个基本视图,每次点击时backgroundColor
在两种颜色之间切换。为了实现这一点,我创建了一个函数,它将要更改的视图和两种颜色作为参数进行切换。
为了实现这个目的,我需要传递它应该改变的UIView。但UIViews无法原生识别触摸因此我“链接”(我不确定我理解这一点)UITapGestureRecognizer
它会触发我的ViewController
中的动作。
现在我需要将UITapGestures链接到UIView
,以便我可以更改它。
我意识到我可以简单地将相应的UIView输入到动作中,但我想让这个功能尽可能灵活(只是尝试以正确的礼仪开始)。
这是我的不完整功能:
@IBAction func colorViewTapped(_ sender: Any) {
print("tap")
//Heres the problem: I get an "Cannot convert value of type 'Any' to expected argument type 'UIView'
toggleViewBackgroundColor(view: sender, color1: UIColor.blue, color2: UIColor.brown)
}
答案 0 :(得分:4)
将您的操作方法参数类型从UITapGestureRecognizer
更改为Any
,然后使用UIGestureRecognizer
的{{3}}属性获取已点按视图的参考。
@IBAction func colorViewTapped(_ sender: UITapGestureRecognizer) {
print("tap")
toggleViewBackgroundColor(view: sender.view!, color1: UIColor.blue, color2: UIColor.brown)
}