alertview中的textfield无法在ios7中运行?

时间:2013-10-07 06:30:51

标签: iphone ios ipad

我有一个应用程序,其中我使用特定设计是有原因的。我将文本字段放在带有背景图像的其他按钮上方的警报视图中。在ios 6版本中一切正常。

UIAlertView *av=[[UIAlertView alloc] initWithTitle:@"fdhdj" message:@" hdfjkhfjkhdk" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:@" ",@"cancel",nil];
     av.alertViewStyle = UIAlertViewStylePlainTextInput;
 namefield = [[UITextField alloc] initWithFrame:CGRectMake(10.0,43.0, 264.0, 44.0)];
    namefield.borderStyle = UITextBorderStyleNone;
    namefield.background = [UIImage imageNamed:@"text_field_default.png"];
    namefield.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    namefield.textAlignment = UITextAlignmentCenter;
    //[namefield setBackgroundColor:[UIColor whiteColor]];
    [av addSubview:namefield];
    [namefield release];
    av.tag=12;
    av.delegate=self;  
    [av show];

    [av release];

但现在在ios 7中,我听说你无法轻易改变UIAlertView的视图层次结构。 这种情况的另一种选择是设置

  

alert.alertViewStyle = UIAlertViewStylePlainTextInput

但是我们可以在任何我们想要的地方添加该文本字段吗?就像我上面的第一个其他按钮一样,任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:3)

 UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Enter Student Name" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save",nil];

 [alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
 [alertView show];

我曾经这样做,而且工作得很好

答案 1 :(得分:2)

这是我在iOS7中使用alertView支持addSubview的组件。

CXAlertView - 自定义提醒视图,可让您将视图添加为主要内容。

enter image description here

答案 2 :(得分:0)

您的问题的简单答案是否定的,您不能更改此testField UIAlertViewStylePlainTextInput中的任何内容,您不应该这样做。

这是来自Apple:

  

UIAlertView类旨在按原样使用,但不是   支持子类化。此类的视图层次结构是私有的   不得修改。

不幸的是,你听到的我听说你无法轻易改变UIAlertView 的视图层次结构是错误的,你根本无法改变iOS7中UIAlertView的视图层次结构。

网上有一个很好的替代方案,您可以登入cocoacontrols.com

答案 3 :(得分:0)

你不能轻易改变iOS 7中UIAlertView的视图层次结构。(你也不应该;文档特别告诉你不要这样做。)转到开发人员论坛,看看有关它的长篇讨论。

在您的情况下,另一种选择是设置alert.alertViewStyle = UIAlertViewStylePlainTextInput;这将为您添加一个文本字段。您可以使用UITextField * textField = [alertView textFieldAtIndex:0];。

在UIAlertView委托回调中访问它。