При запуске мое приложение проверяет наличие обновлений. Если это возможно, я пытаюсь поместить наложение поверх друг друга с помощью этой инструкции:
[[[UIApplication sharedApplication] keyWindow] addSubview:overlay];
Вид наложения отображается, но быстро исчезает, а я хочу удалить его, когда завершится процесс обновления. Вместо этого, если я добавляю представление наложения как подпредставление текущего представления, представление наложения остается на вершине, пока процесс обновления не завершится.
Я должен поместить вид наложения поверх ключевых окон, поскольку в моем приложении есть панель вкладок, поэтому, если я наложу вид наложения поверх текущего вида, вид наложения исчезнет, если пользователь коснется другого элемента в панель вкладок.
Может быть из-за того, что я перенес проверку на обновление в отдельном задании с NSInvocation? Вот мой соответствующий код:
[в viewDidLoad]
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(checkForUpdate) object:nil];
[queue addOperation:operation];
[operation release];
[в checkForUpdate]
if (![localVersion isEqualToString:remoteVersion])
{
[self performSelectorOnMainThread:@selector(doUpdate) withObject:nil waitUntilDone:NO];
}
[в doUpdate]
UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"Update" message:@"Download the latest version of...?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alertView show];
[alertView release];
[в завещании увольнения с индексом кнопки]
if (buttonIndex == 1)
{
CGRect overlayFrame = [[UIApplication sharedApplication] keyWindow].bounds;
overlay = [[UIView alloc] initWithFrame:overlayFrame];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha = 0.7;
// Do other staff...
[[[UIApplication sharedApplication] keyWindow] addSubview:overlay];
NSURL *url = [NSURL URLWithString:@"http:www.testserver.com/test/UpdatePack.zip"];
NSURLRequest *theRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:300.0];
connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
connection = nil;
}
[в соединенииDidFinishLoading]
[overlay removeFromSuperview];