Быстро удерживайте нажатой, чтобы обновить индикатор прогресса - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу, чтобы мой индикатор выполнения увеличивался и уменьшался, если пользователь удерживал или отпускал в представлении.Прямо сейчас я использую только UILongPressGestureRecognizer в View, но сейчас я не знаю, как удерживать view, чтобы активировать мой индикатор выполнения.Мой progessbar называется counterView в коде.Кто-нибудь может мне помочь?

Это мой код прямо сейчас:

class Main: UIViewController {

    @IBOutlet weak var myView: UIView!
    @IBOutlet weak var counterView: CounterView!

    var timer: Timer!
    var progressCounter:Float = 0
    let duration:Float = 3.0
    var progressIncrement:Float = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        let tap = UILongPressGestureRecognizer(target: self, action: #selector(tapHandler))
        myView.addGestureRecognizer(tap)
    }

    @objc func showProgress() {
        if(progressCounter > 1.0){timer.invalidate()}
        counterView.progress = progressCounter
        progressCounter = progressCounter + progressIncrement
    }

    @objc func tapHandler(gesture: UILongPressGestureRecognizer) {
        // handle touch down and touch up events separately
        if gesture.state == .began {
            addView()
            progressIncrement = 1.0/duration
            timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.showProgress), userInfo: nil, repeats: true)
        }
        else if gesture.state == .ended {
            addFlashView()    
        }   
    }

    func addView() {
        let label = UILabel(frame: CGRect(x: counterView.frame.size.width / 2, y: counterView.frame.size.height / 2, width: 230, height: 20))
        label.textColor = .green
        label.center = CGPoint(x: counterView.frame.size.width / 2, y: counterView.frame.size.height / 2)
        label.textAlignment = .center
        label.text = "Hold down"
        myView.backgroundColor = UIColor.lightGray
        counterView.isHidden=false
        counterView.addSubview(label)
    }

    func addFlashView(){
        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

        let resultViewController = storyBoard.instantiateViewController(withIdentifier: "ResultView") as! Flash

        self.present(resultViewController, animated:true, completion:nil)
    }
}
...