2016-09-01 23 views
-2

Buttonを無効にする方法を作成しようとしています。これは私が作ったアプリです。それは卵のタイマーです。私は1つのバグに遭遇します。再生ボタンを複数回押すとタイマーのスピードが上がり、止めることができません。私はディセーブル機能を作りたいと思っていますが、私がフォーラムで見たことのすべてが使い方を述べています。 enable = true。このXcodeを使用すると、有効ではないことがわかります。 Xcode 8のボタンを有効または無効にするための適切なコードは何ですか?ボタンを有効または無効にするXcode 8

import UIKit 

class ViewController: UIViewController { 

    var timer = Timer() 
    var myCount = 210 
    var button = 0 

    func processTimer() { 

     //what happens every second 

     counter() 

    } 

    func startTimer() { 
     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.processTimer), userInfo: nil, repeats: true) 
     button = 1 
    } 

    func pauseTimer() { 
     timer.invalidate() 
     button = 0 
    } 

    func resetTimer(){ 
     timer.invalidate() 
     myCount = 210 
     countdown.text = "\(myCount)" 
     button = 0 
    } 

    func counter() { 
     myCount -= 1 
     if myCount > 0 { 
      countdown.text = "\(myCount)" 
     } else { 
      countdown.text = "0" 
      timer.invalidate() 
     } 
    } 

    func add(){ 
     myCount += 10 
     if myCount > 0 { 
      countdown.text = "\(myCount)" 
     } else { 
      countdown.text = "0" 
     } 
    } 

    func sub(){ 
     myCount -= 10 
     if myCount > 0 { 
      countdown.text = "\(myCount)" 
     } else { 
      countdown.text = "0" 
     } 
    } 






    // timer countdown 
    @IBOutlet var countdown: UILabel! 

    // pause button 
    @IBAction func pauseButton(_ sender: AnyObject) { 
     pauseTimer() 
     print("Timer Paused") 
    } 


    //play button 
    @IBAction func playButton(_ sender: AnyObject) { 
     startTimer() 
     print("Timer started") 
    } 


    // -10 seconds 
    @IBAction func minusTen(_ sender: AnyObject) { 
     sub() 



    } 
    // reset timer to 290 
    @IBAction func resetButton(_ sender: AnyObject) { 
     resetTimer() 
     print("Timer Reset") 
    } 






    // +10 seconds 
    @IBAction func addTen(_ sender: AnyObject) { 
     add() 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     countdown.text = "\(myCount)" 

     if button == 0{ 
      playButton.enabled = true 
     } 




    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 
+2

'enabled' - >' isEnabled' – matt

答えて

2

enabled/disableButtonに二つの方法があります。

playButton.isEnabled = false // This will give the (style) effect of disable to button 

または

playButton.userInteractionEnabled = false // This will not give the (style) effect of disable 
             to button simply stop the user interaction 
+0

あなたが得ているエラーについての詳細を教えてください。 –

+0

「値の型(AnyObject) - >()」に「userInteractionEnabled」のメンバーはありません " –

+0

私はこのウェブサイトを初めて利用しています。情報 –

1

あなたがする必要がある最初の事はあなたのボタンのコンセントを追加することです。あなたは、関数を作成しましたが、あなたは変更を加えたい場合は、別のコンセントを必要とする - この

@IBOutlet weak var cmdPlayButton: UIButton! 

のようなもの、あなたはタイマーが動作している間、ボタン上の複数の押下を防ぎたい場合は、必要にそれが押されているとすぐにボタンを無効にし、タイマーが

//play button 
@IBAction func playButton(_ sender: AnyObject) { 
    cmdPlayButton.enabled = false 
    startTimer() 
    print("Timer started") 
} 

だけでタイマーが終了またはがリセットされたとき、ボタンを有効にするために覚えているが完了したときにのみ、それを再度有効にするには、あなたが一時停止機能を処理する必要があります。 - 再生ボタンのテキストを変更して、たとえば「再起動」を読むことができます。

関連する問題