詳細
UIButtonにUITapGesturerecognizeをつけて、通常のタップをされたらラベルをプラス1にして、ロングタップのままだったら連続で数値が上がるような機能を作りたいと思っています。
コード
該当文々のソースコードは下記のようになります。
Swift
1@IBOutlet weak var addTempoButton: UIButton! { 2 didSet { 3 let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressAdded(_:))) 4 addTempoButton.addGestureRecognizer(longPress) 5 } 6 } 7var timer:Timer? 8 9@objc func longPressAdded(_ sender: UILongPressGestureRecognizer) { 10 11 if sender.state == .began{ 12 print("lpngadd") 13 timer = Timer.scheduledTimer(withTimeInterval: 0.05, repeats: true){(_) in 14 self.stepValue = self.stepValue + 1 15 self.tempoLabel.text = String(Int(self.stepValue)) 16 } 17 } 18 if sender.state == .ended{ 19 //タイマーを破棄する 20 timer?.invalidate() 21 } 22 } 23@IBAction func addTempo(_ sender: Any) { 24 stepValue += 1 25 tempoLabel.text = String(Int(stepValue)) 26 } 27 28
###問題点
ButtonをタップするとaddTempo()は呼ばれてラベルの数値が変化するのですが、ロングタップしていてもlongPressAdded()が呼ばれず、処理が走らない状況です。
調べてみたのですが何が問題なのかわからなかったため質問させていただきました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。