UIAlertView в iOS7 блокирует отображение при увольнении
У меня не было проблем с следующим кодом в версиях iOS до выхода iOS7, и теперь, когда я пытаюсь запустить это на iOS7, я получаю нежелательные результаты.
[self.view setUserInteractionEnabled:YES]; mAlert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"There are no more reports matching this search query." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [mAlert show]; [SVProgressHUD dismiss];
Появится предупреждающее сообщение и предложит пользователю нажать ОК. Когда предупреждение отклоняется, я оставляю теперь представление, с которым больше нельзя взаимодействовать, и единственным решением является перезапуск приложения. Само приложение не «заморожено», как в моем профиле, и я вижу, что оно все еще живое, я просто не могу с ним взаимодействовать. Я реализую UIAlertViewDelegate, а ниже – моя реализация функции didDismissWithButtonIndex:
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex: (NSInteger)buttonIndex { mAlert = nil; }
Я пробовал несколько вещей, и все равно ничего. Невероятно разочаровывает, и я чувствую, что мне не хватает чего-то тривиального.
Вы уверены, что метод работает в основном потоке? Любой метод, который что-то делает с пользовательским интерфейсом, должен запускаться в основном потоке, а не в фоновом потоке.
Если вы хотите показать предупреждение из фонового потока, попробуйте это в фоновом режиме:
[self performSelectorOnMainThread:@selector(showAlert) withObject:nil waitUntilDone:YES];
И добавьте способ, подобный этому
- (void) showAlert { UIAlertView *mAlert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"There are no more reports matching this search query." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [mAlert show]; }