AlertView with textfield - 初学者

时间:2012-03-22 18:04:29

标签: iphone objective-c

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"HELOOOOOOOO" message:@"write a number of text-lines/paragraph here"
                                                      delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Yes", nil];
       UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 95, 260, 25)];
       [myTextField setBackgroundColor:[UIColor whiteColor]];
       [alert addSubview:myTextField];
       [alert show];

如果你仔细观察,你会发现message属性很长。我需要这个alertview首先显示标题,然后是我的长消息,然后是文本字段,最后是2个按钮。

但是,在这里说的是,由于message太长,文本字段与按钮重叠。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

如果是iPhone,你真的不能。 UIAlertView不是为了处理输入。扩展消息以滚动视图显示,但您实际上不应该在其视图层次结构中添加UITextField(对于一个,它违反了他们的设计标准,您的应用程序可能会被固定!)。

在这种情况下,最好使用新的UIViewController来处理显示内容。

同样,UIAlertView要提供的唯一“动作”是多个按钮。

答案 1 :(得分:0)

实际上,你的信息有多长并不重要。警报视图将始终大小适合。

解决此问题的一种方法是在消息字符串的末尾添加一堆\n,这相当于换行。

编辑:如果您的邮件太长,以至于它放在UIScrollView中,那么除非您对主要黑客行为(包括更改界限)没有问题,否则您无法真正做到UIAlertView,向下移动每个按钮等。)。

第二种方式仅适用于iOS 5及更高版本。您可以将UIAlertView's alertStyle属性设置为UIAlertViewStylePlainTextInput,该属性将显示带有文本字段的警报视图。

答案 2 :(得分:0)

使用换行符或换行符\n

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AlertView"message:@"\nhello:.................... \nwrite here.................. \nwrite here....................." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];

see output alert image

Check this blog post for more help

答案 3 :(得分:0)

在您的实施文件中实现这段代码。

- (void)willPresentAlertView:(UIAlertView *)alertView
{
alertview.frame = CGRectMake(12, 95, 260, 25); //You can set a frame that suits to your needs
}

此代理- (void)willPresentAlertView:(UIAlertView *)alertView将在显示alerview之前调用,因此这是将帧设置为alertview的更好方法。

有关aleert视图的更多信息: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html#//apple_ref/occ/intf/UIAlertViewDelegate