我在Objective-C中发现了一个奇怪的UIAlertController行为。我在其中添加了两个动作,但是当用户选择任何动作时我发现 - 处理程序回叫在大约1秒后调用。我想知道为什么这种延迟发生回调。是否有可能以任何方式避免这种情况?
- (IBAction)openAlert:(id)sender {
UIAlertController * alert= [UIAlertController
alertControllerWithTitle:@"Info"
message:@"You are using UIAlertController"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* okBtn = [UIAlertAction
actionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
// Delay ~ 1 sec to get control here
self.view.backgroundColor = [UIColor blackColor];
}];
UIAlertAction* cancelBtn = [UIAlertAction
actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * action)
{
}];
[alert addAction:okBtn];
[alert addAction:cancelBtn];
[self presentViewController:alert animated:YES completion:nil];
}
它在主线程上。为了确保我在下面的代码片段中尝试过。
dispatch_async(dispatch_get_main_queue(), ^{
// Alert view code
});