我正在尝试制作一个按钮,用于拍照和录制视频。长按时将进行记录,一键拍摄照片。当按钮被按下时,我想将其转换以创建效果。但是开始和结束没有被触发,因为它没有改变?

func centerButtonPressedDown(sender: UITapGestureRecognizer) {

    if !pictureTaken {
        delegate?.didLongTapCameraButton()


    } else {

    }



}

func centerButtonClicked(sender: UITapGestureRecognizer) {


    if sender.state == .began {
        self.centerButton.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
    } else if sender.state == .ended {
        self.centerButton.transform = CGAffineTransform.identity
    }





}


中心按钮

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(centerButtonClicked))  //Tap function will call when user tap on button
    let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(centerButtonPressedDown))
    tapGesture.numberOfTapsRequired = 1
    centerButton.addGestureRecognizer(tapGesture)
    centerButton.addGestureRecognizer(longGesture)

最佳答案

我首先尝试了您的代码兄弟,它向我显示了错误,然后我修改了代码,使其正常工作。

let tapGesture = UITapGestureRecognizer(target: self, action:Selector("centerButtonClicked:"))  //Tap function will call when user tap on button
let longGesture = UILongPressGestureRecognizer(target: self, action:Selector("centerButtonPressedDown:"))
tapGesture.numberOfTapsRequired = 1
centerButton.addGestureRecognizer(tapGesture)
centerButton.addGestureRecognizer(longGesture)


func centerButtonPressedDown(sender: UILongPressGestureRecognizer) {

    if sender.state == .Began {
        print("long press began")
    }
    else if sender.state == .Ended {
        print("long press Ended")
    }
}

func centerButtonClicked(sender: UITapGestureRecognizer) {
     print("tap is detected")
}


当我单击按钮时,打印结果是

 tap is detected


当我长按按钮时,打印结果是

 long press began
 long press Ended

10-08 07:28