UIAlertView требует времени, чтобы показать

Я хочу отобразить представление предупреждения при нажатии кнопки. Он отображается, но для отображения на экране требуется слишком много времени. вот функция, которую я вызываю при нажатии кнопки:

-(void)saveAndClose:(id)sender { waitForOCR=[[UIAlertView alloc] initWithTitle:@"Processing..." message:@"Please wait." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil, nil]; waitForOCR.delegate=self; [waitForOCR show]; if(!isCancelled){ NSMutableArray *dateSaved=[[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"dateCaptured"]]; NSDateFormatter *dateText=[[NSDateFormatter alloc] init]; [dateText setDateFormat:@"yyyy-MM-dd"]; NSDate *now=[NSDate date]; NSString *dateValue=[dateText stringFromDate:now]; [dateSaved addObject:dateValue]; NSMutableArray *timeSaved=[[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"timeCaptured"]]; NSDateFormatter *timeText=[[NSDateFormatter alloc] init]; [timeText setDateFormat:@"HH:mm:ss"]; NSString *timeValue=[timeText stringFromDate:now]; [timeSaved addObject:timeValue]; [[NSUserDefaults standardUserDefaults] setObject:dateSaved forKey:@"dateCaptured"]; [[NSUserDefaults standardUserDefaults] setObject:timeSaved forKey:@"timeCaptured"]; [dateSaved release]; dateSaved=nil; [timeSaved release]; timeSaved=nil; int counter = [[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchesCounter"]; counter++; [[NSUserDefaults standardUserDefaults] setInteger:counter forKey:@"LaunchesCounter"]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"image%d.png",counter]]; NSData *thedata = [[NSData alloc] initWithData:UIImagePNGRepresentation(imageToCrop)]; [thedata writeToFile:localFilePath atomically:YES]; [thedata release]; [NSThread detachNewThreadSelector:@selector(processOcrAt:) toTarget:self withObject:[self.imageCropper getCroppedImage]]; } else{ isCancelled=FALSE; } } 

Как вы можете видеть, я показываю UIAlerView в начале функции. Но это слишком долго, чтобы отображаться. Любое предложение исправить эту проблему? С уважением, Idrees

2 Solutions collect form web for “UIAlertView требует времени, чтобы показать”

Предупреждение будет отображаться только в конце текущего цикла цикла, поэтому все, что вы делаете сразу после «показания», действительно произойдет раньше. Обратите внимание, что было бы неплохо переместить этот код в фоновом режиме в любом случае, поскольку в противном случае он заблокирует основной поток и сделает приложение в лучшем случае невосприимчивым.

Переместить [alertview show]; в главную очередь. Это полезно, если вы намерены отображать предупреждение от асинхронного обратного вызова.

 dispatch_async(dispatch_get_main_queue(), ^{ [alertview show]; }); 
  • iOS 7 UIDatePicker в настройке UIAlertView
  • как цветные конкретные слова в uialertview или UIAlertController? (СВИФТ)
  • Как вы форматируете более двух кнопок внутри UIAlertView с помощью стиля UIAlertStylePlainTextInput?
  • Как удалить% 20 ​​в alertview ios
  • UIView выше UIAlertView
  • Как проверить версию приложения и попросить пользователей обновить?
  • Позиция для оповещения не является центром
  • Ориентация интерфейса iOS 7 UIAlertView в фоновом режиме не обновляется
  • Пользовательский вид предупреждения вызывает сбой при повороте iPad
  • uialertview, вызываемое более одного раза
  • Ошибка приложения при использовании UIAlertViewStyleSecureTextInput
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.