2017-10-08 1 views
0

좋아, 그래서 버튼을 누르면 타이머를 사용하여 끊임없이 진동하는 응용 프로그램이 있습니다. 진동을 방지하기 위해 사용하고 싶은 다른 버튼이 있습니다. 시작 버튼으로 다시 활성화 할 수도 있습니다. 어떻게해야합니까? 여기에 내 코드 (단추 2가 정지 버튼입니다) (또한 사용하여 메신저 엑스 코드) 인 :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

할 수 없습니다. Timer에 대한 참조 ('_'로 지정)를 유지하지 않으므로이를 무효화 할 수 없습니다. 그 일은 꽤 바보 같은 짓이었습니다. – 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 속성을 사용하면 클래스의 모든 메서드에서 타이머에 액세스 할 수 있습니다.

관련 문제