I 사용자가 10 minutes.I'm 당 하나 개의 요청이 이제 코드일시적으로 다른 요청
1 사용자에게이 세 가지 포인트를 번역 빨아 제출 제한하는 빠른 아이폰 OS 기반의 응용 프로그램을 짓고 있어요을 만들기에서 사용자를 일시 중단 버튼을 클릭 2 버튼이 10 분 동안 비활성화됩니다. 3 버튼이 활성화되었습니다.
나는 전체 코드가 필요하지는 않습니다 :) 그냥 방법이나 조언.
는 당신에게 다음과 같은I 사용자가 10 minutes.I'm 당 하나 개의 요청이 이제 코드일시적으로 다른 요청
1 사용자에게이 세 가지 포인트를 번역 빨아 제출 제한하는 빠른 아이폰 OS 기반의 응용 프로그램을 짓고 있어요을 만들기에서 사용자를 일시 중단 버튼을 클릭 2 버튼이 10 분 동안 비활성화됩니다. 3 버튼이 활성화되었습니다.
나는 전체 코드가 필요하지는 않습니다 :) 그냥 방법이나 조언.
는 당신에게 다음과 같은먼저 영구 데이터에 상태를 유지하고 사용자가 다른 컨트롤러로 이동 한 다음 돌아가면 버튼이 여전히 비활성화되어 있어야합니다. 컨트롤러에서 다음
class PersistentData {
static let sharedInstance = PersistentData();
var disableSubmitButton = false
}
override func viewDidLoad() {
// each load need to check
if PersistentData.sharedInstance.disableSubmitButton == true {
submitButton.isEnabled = false
}
}
func onButtonClicked() {
// change button to disable
submitButton.isEnabled = false
// set state in persistent data so it can be the same wherever controller you go
PersistentData.sharedInstance.disableSubmitButton = true
// now set the timer to enable back
Timer.scheduledTimer(timeInterval: 10.0 * 60, target: self, selector: #selector(self.updateButtonState), userInfo: nil, repeats: false);
}
func updateButtonState() {
// update value in persitence data
PersistentData.sharedInstance.disableSubmitButton = false
// change button to enable back
submitButton.isEnabled = true
}
참고 감사합니다 TimeInterval이 초 그래서 * 10 (60)은 10 분입니다. UI 업데이트는 주 스레드에서 발생해야합니다. 따라서 주 블록으로 시간 블록이 다시 전달됩니다.
@IBAction func touchButton(_ sender: AnyObject) {
button.isEnabled = false
Timer.scheduledTimer(withTimeInterval: 60*10, repeats: false) { _ in
DispatchQueue.main.async {
self.button.isEnabled = true
}
}
}