Я хочу, чтобы мой индикатор выполнения увеличивался и уменьшался, если пользователь удерживал или отпускал в представлении.Прямо сейчас я использую только 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)
}
}