获取UITapGestureRecognizers目标

时间:2017-04-14 04:56:51

标签: ios swift uiview uitapgesturerecognizer

我正在尝试创建一个基本视图,每次点击时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)
}

1 个答案:

答案 0 :(得分:4)

将您的操作方法参数类型从UITapGestureRecognizer更改为Any,然后使用UIGestureRecognizer的{​​{3}}属性获取已点按视图的参考。

@IBAction func colorViewTapped(_ sender: UITapGestureRecognizer) {
    print("tap")
    toggleViewBackgroundColor(view: sender.view!, color1: UIColor.blue, color2: UIColor.brown)
}