2011-01-10 55 views
0

我需要在UIAlertview中放置3个按钮和一个文本框。我写这样的代码。显示带文本框和按钮的UIAlertview时出现问题

UIAlertView *share = [[UIAlertView alloc] initWithTitle:@"Refresh" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", @"Contacts", nil]; 
share.tag = 2; 
[share setDelegate:self]; 
[share setTitle:@"Enter Name"]; 
[share setMessage:@" "]; 

nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)]; 
[nameField setBackgroundColor:[UIColor whiteColor]]; 
[nameField setKeyboardType:UIKeyboardTypePhonePad]; 
[share addSubview:nameField]; 
[share show]; 
[share release]; 
[nameField release]; 

但它显示like this

如果我放置2个按钮,它显示正常。

当我添加新按钮它添加在下一行显示上面的链接。

但我需要在一列中显示所有三个按钮。

我该怎么做?

回答

1

您必须为您的消息字符串添加必要数量的@“\ n”,为UITextField腾出空间。

添加几个(如:@“你想刷新数据\ n \ n”),看看会发生什么。

我已经试过这种方法在过去,它的工作,但我有一些问题,当显示警报时旋转设备。布局变得混乱。

您也可以尝试继承UIAlertView中像here

编辑:

我刚才想,意识到UIAlertView中具有最大高度,这就是为什么这不工作(也是为什么它与2个按钮一起使用,而不是3个或更多)。

你不能安排UIAlertView的按钮,至少不能使用公共API。如果你对无证API感兴趣,请看Erica Sadun的书,这里有很多关于UIAlertView定制的内容。但在此之前,为什么你需要这两个按钮:“确定”和“完成”?他们不一样的意思吗? (在从用户的角度来看至少)

我的观点是,如果其3个按钮的工作太多了,然后重新考虑你的标题/消息,也许它可以只用2

做希望它可以帮助

+0

我试图通过放置消息零但没有改变。我需要在一个列中水平排列按钮,而不是垂直排列......你可以编辑你的答案。 – MaheshBabu 2011-01-10 05:07:47