使用文本字段和按钮显示UIAlertview时出现问题

时间:2011-01-10 04:34:29

标签: iphone

我需要在UIAlertview中放置3个按钮和一个文本字段。我写了这样的代码。

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 个答案:

答案 0 :(得分:1)

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

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

我以前尝试过这种方法并且它有效但在显示警报时旋转设备时遇到了一些问题。布局变得一团糟。

您也可以尝试在here

中继承UIAlertView

修改

我刚试过并意识到UIAlertView有一个最大高度,这就是为什么它不能正常工作(也就是为什么它适用于2个按钮而不是3个或更多)。

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

我的观点是,如果它对3个按钮的工作太多,那么重新考虑你的标题/消息,也许它只能用2来完成。

希望有所帮助