UITapGestureRecognizer发件人是手势,而不是ui对象

时间:2015-06-22 04:50:15

标签: ios xcode swift uigesturerecognizer

我有一个名为的按钮,我给它一个UIGestureRecognizer,这样只有长按按钮才会运行IBAction。您可以通过向按钮自身添加UILongPressGestureRecognizer来完成此操作。然后你控制将手势识别器拖动到这样的函数:

 @IBAction func handleGesture(sender: UIGestureRecognizer) {
    if sender.state == UIGestureRecognizerState.Began
    {
        let labelTap1=UITapGestureRecognizer(target: self, action: "labelTapped:")
        let alertController = UIAlertController(title: "**I want this to be the title of the button**", message:
            "This is the description of the function you pressed", preferredStyle: UIAlertControllerStyle.Alert)
        alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default,handler: nil))

        self.presentViewController(alertController, animated: true, completion: nil)
    }
}

如您所见,UIAlertController出现,我希望标题显示按钮当前标题。如果此函数的发件人是按钮,我可以使用sender.currentTitle调用它。当函数的发送者是手势时,如何获得与手势相关联的按钮的标题。

我在目标C中看过这样的帖子,但在Swift上没有。当你长按按钮本身时,这就是项目获取按钮描述的全部内容。如果有人有任何想法如何用我迄今为止所做的事情来完成这项工作,或者有不同的方法,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:20)

您可以通过其视图属性获取对手势添加到的视图的引用。在这种情况下,您将它添加到按钮,以便视图属性将返回给您按钮。

let button = sender.view as? UIButton