如何区分用户是快速点击 UIButton 还是在 Swift 中放置并按住它?

use*_*930 5 uibutton iboutlet ios touch-up-inside swift

我正在创建一个相机应用程序swift,我有一个UIButton. 我想提出两个选项:当用户单击按钮时 - 它会拍照,当用户将手指放在按钮上时 - 它会记录电影直到用户释放按钮。

我有录音和拍照功能,现在我需要区分用户对按钮的操作。

此按钮的可用操作包括:

在此处输入图片说明

我试图开始录制touch down并停止录制touch up inside,但是我不知道我应该把负责拍照的代码放在哪里。如果我也把它放进去,touch down那么当用户开始录制电影时 - 也会拍照,我想避免它。

Jos*_*ann 6

点击和长按的手势识别器可以很好地配合,以缩短此时间(点击会推迟触发,直到确定不是长按)。

    class ViewController: UIViewController{

        @IBOutlet weak var button: UIButton!
        override func viewDidLoad() {
            super.viewDidLoad()
            button.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tap)))
            let longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPress))
            longPressGestureRecognizer.minimumPressDuration = 1
            button.addGestureRecognizer(longPressGestureRecognizer)
        }

        @objc private func tap(tapGestureRecognizer: UITapGestureRecognizer) {
            print("tap")
        }
        @objc private func longPress (longPressGestureRecognizer: UILongPressGestureRecognizer) {
            if longPressGestureRecognizer.state == .began {
                print("long press began")
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)