Добавьте CLLocationManagerDelegate
к вашему наследованию класса, а затем вы можете выполнить эту проверку: Swift 1.x - 2.x версия:
if CLLocationManager.locationServicesEnabled() {
switch CLLocationManager.authorizationStatus() {
case .NotDetermined, .Restricted, .Denied:
print("No access")
case .AuthorizedAlways, .AuthorizedWhenInUse:
print("Access")
}
} else {
print("Location services are not enabled")
}
версия Swift 3.0:
if CLLocationManager.locationServicesEnabled() {
switch CLLocationManager.authorizationStatus() {
case .notDetermined, .restricted, .denied:
print("No access")
case .authorizedAlways, .authorizedWhenInUse:
print("Access")
}
} else {
print("Location services are not enabled")
}
Попробуйте, это решит вашу проблему. Добавьте свойство к вашему классу. и по щелчку переключателя установите его на true
isProcessing: boolean
toggle(){
if(this.isProcessing){ return; }
this.isProcessing= true;
// api call goes here
}
Также, когда API возвращает ответ об успешном ответе или наборе ошибок. прогресс это не вызовет снова.
Надеюсь, это поможет:)
Вы можете определить флаг в своем компоненте и использовать его в вызываемом методе, чтобы отслеживать, обрабатывается ли он или нет. Сбросьте флажок, как только вы получите ответ от службы. Псевдокод ниже.
isProcessing:boolean = false;
HitLike() {
if(!isProcessing) {
this.isProcessing = true;
this._yourServiceInstance._serviceMethod.subscribe(result => {
if(res.success) {
//change class of button
this.isProcessing = false;
}
}, error => {
//change button class and show a relevant message
this.isProcessing = false;
});
}
}