проблемы с iphone на ipad, iphone 4 uialertview - PullRequest
8 голосов
/ 17 июля 2010

Итак, я обновил код до ipad (то есть преобразовал в универсальное приложение).Тем не менее, рендеринг UIAlertview, кажется, отключен для IOS4.Вместо того, чтобы располагаться посередине, он подпрыгивает и отображается сверху, с обрезанной половиной коробки.То же самое касается ландшафтной ориентации.

Насколько я понимаю, UIalertview всегда находится посередине?Я просмотрел код, и нигде в коде я не установил фрейм / позицию.Это происходит только для 4.0, как на iphone 4, так и на iouch 4.0.Любая другая версия в порядке, включая Ipad.Есть мысли?

Спасибо.

Ответы [ 3 ]

1 голос
/ 24 января 2011

Кажется, это ошибка.У меня также была проблема на iPad с iOS 3.2.

Решение:

a) Проверьте состояние приложения: в iOS 4 просто используйте

[UIApplication sharedApplication].applicationState

Старая версия iOS: Магазинсостояние вашего приложения вручную:

-(void)applicationWillResignActive:(UIApplication *)application
{
    self.appIsInBackground = YES;
}

-(void)applicationWillTerminate:(UIApplication *)application
{
    self.appIsInBackground = YES;
}

-(void)applicationDidBecomeActive:(UIApplication *)application
{
    // Open your UIAlert here if self.appIsInBackground == YES;

    self.appIsInBackground = NO;
}

b) открыть UIAlert после того, как приложение стало активным, как показано выше в комментариях.

0 голосов
/ 22 июня 2011

У меня та же проблема для iPad 3.2, когда приложение активируется, и в это время отображается предупреждение, что предупреждение будет отображаться в верхнем левом углу.Поэтому я исправил использование следующего метода в методе - (void) applicationDidBecomeActive: (UIApplication *) application

//Check that key window is alert view
if ([[[UIApplication sharedApplication].keyWindow description] hasPrefix:@"<_UIAlertOverlayWindow"]) {
    //Yes then check for subviews tht are alertViews
    UIWindow *alertViewWindow = [UIApplication sharedApplication].keyWindow;
    NSArray *subViews = [alertViewWindow subviews];
    for (UIView *subview in subViews) 
    {
        if ([subview isKindOfClass:[UIAlertView class]]) 
        {
            //Retain it
            UIAlertView *alertView = (UIAlertView *)[subview retain];
            //Now dismiss it and then show it again
            [alertView dismissWithClickedButtonIndex:0 animated:NO];//Here ClickedButtonIndex must be according to cancel button
            //Show the alert view again
            [alertView show];
            //Release previsous retained object
            [alertView release];

        }
    }
}
0 голосов
/ 17 мая 2011

Есть ли в вашем предупреждении какие-либо текстовые поля?

Потому что в 4.0+ iOS прокручивает просмотр предупреждений до видимой части, если у вас есть текстовое поле в просмотре предупреждений.

...