UIButton의 활성화/비활성화에 문제가 있습니다. 나중에 코드에서 다시 활성화하지 않으면 버튼이 비활성화됩니다. 나중에 활성화하면 비활성 상태 (불투명도가 변경됨)로 표시되지만 첨부 된 IBAction 함수가 여전히 호출되면이를 누를 때 나타납니다.UIButton이 비활성화 된 후에도 여전히 IBAction을 호출합니다.
코드 :
- (void)loadDataFromURL:(NSURL *)URL withLoadIndicator:(UIActivityIndicatorView *)loadIndicator errorName:(NSString *)name sender:(id)sender andCallback:(SEL)selector{
// Start loading indicator, block button so we will have only one call at a time
[loadIndicator startAnimating];
if ([sender isKindOfClass:[UIButton class]]) {
UIButton *button = sender;
[button setEnabled:NO];
}
// Run the data load sequence
self.dispatchQueue = dispatch_queue_create("com.companyname.settingsqueue", 0);
dispatch_async(self.dispatchQueue, ^{
// Downloading JSON and using CoreData to put it into the sqlite database here
});
// After loading is complete stop animating and re-enable the button
dispatch_async(dispatchQueue, ^{
[loadIndicator stopAnimating];
if ([sender isKindOfClass:[UIButton class]]) {
UIButton *button = sender;
button.enabled = YES;
}
});
}
이상한 것은 그것이 loadIndicator을 위해 완벽하게 작동합니다. 함수의 보낸 사람 매개 변수에서 가져온 단추가 존재하지 않습니다 (null이 아닙니다). button.enabled = YES;
을 제거하면 정상적인 상태로 유지됩니다. 비동기 실행 중에 버튼을 계속 활성화하지 않고 비동기 코드를 실행 한 후에 다시 활성화 할 수 있습니까?
나를 도와 주셔서 미리 감사드립니다.