Iphone AlertView与textfield-初学者

Iphone AlertView与textfield-初学者,iphone,objective-c,Iphone,Objective C,如果仔细观察,您会发现message属性相当长。我需要这个alertview首先显示标题,然后是我的长消息,然后是文本字段,最后是两个按钮 但这里的情况是,由于消息太长,文本字段与按钮重叠 我该如何解决这个问题呢?如果这是针对iPhone的,你真的不能。UIAlertView不是用来处理输入的。扩展消息以滚动视图显示,但您确实不应该在其视图层次结构中添加UITextField,因为这违反了它们的设计标准,您的应用程序可能会被禁用 在这种情况下,最好使用新的UIViewController来处理显

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

但这里的情况是,由于消息太长,文本字段与按钮重叠


我该如何解决这个问题呢?

如果这是针对iPhone的,你真的不能。UIAlertView不是用来处理输入的。扩展消息以滚动视图显示,但您确实不应该在其视图层次结构中添加UITextField,因为这违反了它们的设计标准,您的应用程序可能会被禁用

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


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

实际上,消息的长度无关紧要。警报视图将始终调整大小,使其适合

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

编辑:如果您的消息太长,以至于将其放在UIScrollView中,除非您对主要的黑客攻击、更改UIAlertView的边界、向下移动每个按钮等都很满意,否则您将无能为力


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

为此使用换行符或换行符\n:

 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];

在实现文件中实现这段代码

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AlertView"message:@"\nhello:.................... \nwrite here.................. \nwrite here....................." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];
此委托-voidwillPresentAlertView:UIAlertView*alertView将在显示alerview之前调用,因此这是为alertView设置框架的更好方法

有关aleert视图的更多信息:


但是,在appstore中,当您尝试购买应用程序时,苹果会弹出一个类似的UIAlert视图,其中包含密码文本字段。那么,为什么添加它是不正确的呢?或者苹果使用的是一个看起来像alertview的视图?嗯,苹果确实可以访问比我们喜欢在后台完全运行的应用程序多得多的框架,更不用说,因为他们构建了UIAlertView,他们可以以任何方式修改它。但是,还有一种私有的、未记录的方法可以将UITextField放入警报视图中。@KevinLow因此,如果我使用包含textfield的警报视图,我的应用程序更有可能被拒绝?一点也不。不过,这都是关于你怎么做的。如果您将UIAlertView子类化并修改子视图的边界和位置,那么就可以了。如果您使用的第三方库也是以这种方式进行的,那么也可以。只有当你使用苹果的私有API时,你的应用才会被拒绝,尽管苹果使用的是私有API,所以它在视觉上更准确,我想你可以这么说。我必须为iOS 4和iOS 5构建这个应用。难道没有一个库可以在其中添加文本字段,它看起来像一个alertview吗?我记得有一个,但记不起名字了我不知道是否有第三方代码。如果你不想获得AppStore的批准,这里有一个私有api。我在这个页面上回答了这个问题,希望它有用!
- (void)willPresentAlertView:(UIAlertView *)alertView
{
alertview.frame = CGRectMake(12, 95, 260, 25); //You can set a frame that suits to your needs
}