UIAlertView不显示消息文本

时间:2012-01-15 10:15:53

标签: iphone objective-c ios5

我正在创建一个在纵向布局中工作正常的UIAlertView,但在横向模式下 - 该消息不会出现。

这是一个标准的UIAlertView,有三个按钮。

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"one", @"two", nil];

我尝试按下按钮(根据消息标签的高度)并根据重新定位的按钮调整警报大小,但仍然没有显示消息,尽管有足够的显示空间。 /> 将UILabel背景设置为某种颜色以进行调试表明它只是不显示..

编辑:

UILabel 在那里 - 它没有被显示 在willPresentAlertView方法中,我可以在NSAlertView的子视图中看到UILabel。

3 个答案:

答案 0 :(得分:2)

它似乎是UIAlertView的布局代码的错误。在调试器中摆弄了一下之后,我设法解决了这个问题:

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"one", @"two", nil];

[alert show];

// for some reason we have alpha 0 for 3 or 4 buttons
[[[alert subviews] objectAtIndex:2] setAlpha:1];
// also, for 3 buttons the height goes to 10 -> proof of concept 'fix'
[[[alert subviews] objectAtIndex:2] setFrame:CGRectMake(12, 45, 260, 24)];

[alert release];

这只是一个概念证明。一个真正的工作应该迭代子视图并仅修复高度为小或alpha == 0的标签

答案 1 :(得分:1)

可能你错过了:

[alert show];

答案 2 :(得分:-1)

您可以直接使用uialertview并创建它的对象。然后传递标题和消息和按钮以及其他按钮.....并调用单击按钮方法。

//例

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Title" message:@"The message."
delegate:self cancelButtonTitle:@"button 1" otherButtonTitles:@"button", nil];
                  [alert show];
                  [alert relaese];


//Then use this method

-(void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
// the user clicked one of the ok/cancel buttons
    if(buttonIndex==0)
     {
       NSLog(@"Ok");
     }
     else
     {
     NSLog(@"cancel");
     }
}