2010-07-16 2 views
8

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

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

Спасибо.

+0

Как выглядит ваше создание? у вас есть заголовок и содержание или только один или другой? я видел то же самое, и мне все равно пришлось приспособить кадр так же, как вы пытались переместить рамку? – AtomRiot

+0

Я действительно отлаживаю это для кого-то другого. Создавая, вы имеете в виду выделение и инициализацию? Я думаю, что у него есть как заголовок, так и контент. Я посмотрел на инициализацию и не видел использования фреймов. Я еще раз проверю. По любопытству, это показывает только 4.0, а не другие версии для вас, и только после обновления до универсального? – user396004

ответ

1

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

Решение:

а) Проверьте ваше приложение состояние: В прошивке 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; 
} 

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

0

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

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

0

У меня такая же проблема для 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]; 

     } 
    } 
}