我有一个新奇怪的错误。该项目非常简单,只是一个带有根视图控制器的UINavigationController。
我的问题是,当用户点击工具栏项时,它会调用以下代码:
- (IBAction)configurePressed:(id)sender
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Capture Area"
message:@"Enter the name of the area that is being captured."
preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler:nil];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:nil];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Set"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
UITextField *captureArea = alertController.textFields.firstObject;
_captureArea = captureArea.text;
}];
[alertController addAction:cancelAction];
[alertController addAction:defaultAction];
[self presentViewController:alertController animated:true completion:nil];
}
超级简单吧?好吧,第一次显示需要15秒,然后在随后的时间显示。甚至更奇怪的是,如果我删除该行:
[alertController addTextFieldWithConfigurationHandler:nil];
所以没有文字输入框,它会立即显示。我还确认它正在主线程上执行。
更新#1:新观察,当它等待显示时,主线程似乎被阻止。 AlertController正在MKMapView上显示。
更新#2:模拟器上不会发生这种情况。
其他人有这种经历吗?