使用UITapGestureRecognizer更改标签颜色

Art*_*rti 5 uibutton ios swift

我有一个带UITapGestureRecognizer和longgestureRecognizer的标签:

let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed:"))
let longgestureRecognizer = UILongPressGestureRecognizer(target: self, action: Selector("longLabelPressed:"))
label.addGestureRecognizer(gestureRecognizer)
label.addGestureRecognizer(longgestureRecognizer)
Run Code Online (Sandbox Code Playgroud)

当我按下时,我想改变UIButton中的颜色:

func longLabelPressed(recognizer:UILongPressGestureRecognizer){
        if let label = recognizer.view as? UILabel {
            if recognizer.state == .Began {
                label.textColor = UIColor.redColor()
            }

            if recognizer.state == .Ended {
                label.textColor = UIColor.blackColor()
            }



        }
    }
Run Code Online (Sandbox Code Playgroud)

但是如何检测tap结束事件?

func labelPressed(recognizer:UITapGestureRecognizer) {
        if let label = recognizer.view as? UILabel {

        }

    }
Run Code Online (Sandbox Code Playgroud)

我的目标是使用触摸事件创建像UIButton这样的标签.

jey*_*jey 4

标签的 UserInteractionEnabled 默认为 false。因此,如果您使用其标签出口,请从(XIB/故事板)启用它

现在要使标签与按钮相同UILongPressGestureRecognizer ,然后您的事件调用成功,但您编写了标签颜色更改代码UILongPressGestureRecognizer,因此需要一些时间(默认时间)来检测触摸事件。recognizer.state == .Began 因此更改长按手势的最短时间

longgestureRecognizer.minimumPressDuration = 0.001
Run Code Online (Sandbox Code Playgroud)

使用它recognizer.state == .Began 会快速调用。