iPhone 到 iPad 的转换,iPhone 4 UIAlertView 问题

8
所以我已经将代码升级到iPad(即转换为通用应用程序)。然而,IOS4的UIAlertview渲染似乎有问题。它不是位于中间,而是跳到顶部显示,并且有一半的框被切掉了。横向方向也是如此。
据我所知,UIalertview始终设置在中间?我查看了代码,没有在任何地方设置框架/位置。这仅发生在4.0上,对于运行4.0的iphone 4和itouch都是如此。其他所有版本都可以,包括iPad。有什么想法吗?
谢谢。

你的创建是什么样子的?你有标题和内容吗,还是只有其中一个?我看到了同样的问题,最终还是不得不调整框架,所以你试着移动框架了吗? - AtomRiot
我实际上是在为别人调试这个。你所说的"创建",是指分配和初始化吗?我认为它同时有标题和内容。我查看了初始化部分,并没有看到任何帧使用。我会再次检查。顺便问一下,对你来说,这个只在4.0版本上显示,而其他版本不显示,只是在升级到universal之后才显示吗? - user396004
3个回答

1

似乎是一个bug。我在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;
}

在应用程序变为活动状态后打开UIAlert,如上面的注释所示。


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];

        }
    }
}

0

你的警告框中是否添加了任何文本字段?

因为在4.0+的iOS版本中,如果你在警告框中有一个文本字段,它会滚动到可见部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接