Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获取UITapgestureRecognitors目标_Ios_Swift_Uiview_Uitapgesturerecognizer - Fatal编程技术网

Ios 获取UITapgestureRecognitors目标

Ios 获取UITapgestureRecognitors目标,ios,swift,uiview,uitapgesturerecognizer,Ios,Swift,Uiview,Uitapgesturerecognizer,我试图创建一个基本视图,每次点击它时,它的backgroundColor在两种颜色之间切换。为了实现这一点,我创建了一个函数,该函数以要更改的视图和要切换的两种颜色作为参数 为了让它工作,我需要传递UIView,它应该随之改变。但是UIViews无法本机识别触摸,因此我“链接”(我不确定我是否理解这一点)了一个UIAppgestureRecognitizer,它会触发我的ViewController中的操作 现在我需要链接UIAPT手势UIView,以便我可以更改它。 我意识到我可以简单地在动作

我试图创建一个基本视图,每次点击它时,它的
backgroundColor
在两种颜色之间切换。为了实现这一点,我创建了一个函数,该函数以要更改的视图和要切换的两种颜色作为参数

为了让它工作,我需要传递UIView,它应该随之改变。但是UIViews无法本机识别触摸,因此我“链接”(我不确定我是否理解这一点)了一个
UIAppgestureRecognitizer
,它会触发我的
ViewController
中的操作

现在我需要链接UIAPT手势
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)
}

将动作方法参数类型从
Any
更改为
UIGestureRecognizer
,然后使用
UIGestureRecognizer
的属性获取视图的引用

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

.风景正是我想要的。非常感谢你!您可以将
sender
强制转换为
uitappesturerecognizer
,然后使用其。