2017-10-08 61 views
0

好吧,所以我有一個應用程序,當我按下一個按鈕時,使用定時器不斷振動。我還有另一個我想用來阻止振動的按鈕。但也可以通過啓動按鈕再次啓用。我應該怎麼做?這裏是我的代碼(BUTTON2是停止按鈕)(也即時通訊使用的Xcode):如何停止Xcode中的中繼器?

@IBAction func button1(_ sender: UIButton) { 
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 
    _ = Timer.scheduledTimer(timeInterval: 0.0, target: self, 
     selector: Selector(("doaction")), userInfo: nil, repeats: true) 
} 

@IBAction func button2(_ sender: UIButton) { 
} 
+2

你不能這樣做。您沒有保留對定時器的任何引用(您將其分配給'_'),因此您無法使其無效。這是一件非常愚蠢的事情。 – matt

回答

0

定時器屬性添加到您的類:

var timer: Timer? 

然後更新您的方法有兩種:

@IBAction func button1(_ sender: UIButton) { 
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 
    timer?.invalidate() 
    timer = Timer.scheduledTimer(timeInterval: 0.0, target: self, 
     selector: Selector(("doaction")), userInfo: nil, repeats: true) 
} 

@IBAction func button2(_ sender: UIButton) { 
    timer?.invalidate() 
    timer = nil 
} 

通過使用timer屬性,您可以從您的課程中的任何方法訪問計時器。