我正在创建一个在纵向布局中工作正常的UIAlertView,但在横向模式下 - 该消息不会出现。
这是一个标准的UIAlertView,有三个按钮。
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"one", @"two", nil];
我尝试按下按钮(根据消息标签的高度)并根据重新定位的按钮调整警报大小,但仍然没有显示消息,尽管有足够的显示空间。 /> 将UILabel背景设置为某种颜色以进行调试表明它只是不显示..
编辑:
UILabel 在那里 - 它没有被显示
在willPresentAlertView
方法中,我可以在NSAlertView的子视图中看到UILabel。
答案 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");
}
}