前提・実現したいこと
現在素のままで書いているコードを関数に置き換えたいです
@IBAction func getItem(_ sender: Any) {{ Button.isEnabled = false DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { self.Button.isEnabled = true } ... }
連続タップを防止する機能を実装して関数に置き換えようとすると以下のエラーメッセージが発生してしまいます
発生している問題・エラーメッセージ
Cannot convert value of type 'Bool' to closure result type 'Void'
該当のソースコード
// 重複タップ防止 @IBAction func getItem(_ sender: Any) {{ self.Button.isEnabled = self.noDoubleTappedButton() } func noDoubleTappedButton() -> Bool{ if Button.isEnabled == true{ return false } else { DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { return true } } }
試したこと
https://uruly.xyz/swift3closure_gcd_1/ の内容を読んでクロージャが原因なのはなんとなくわかるのですが自分の理解力だとそれ以上前に進ませません
実現したいこと
buttonを押下するとbutton.isEnabled = false、0.5秒後にbutton.isEnabledがtrueになるような処理を関数で行いたいです
noDoubleTappedButton は、呼んだ瞬間に false を返し、さらに 0.5 秒後に true を返す関数にしたいということだと思われますが、そのようなことは不可能なので、元の書き方のままで良いのでは…。
コメントありがとうございます
出来ないとのことなのでクローズドにします。
回答1件
あなたの回答
tips
プレビュー