这是我的代码:
UIAlertView *theAlert = [[UIAlertView alloc] initWithTitle:@"Alert" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
UITextField *textField = [[UITextField alloc] initWithFrame: CGRectMake(12, 45, 260, 30)];
[textField setBackgroundColor: [UIColor clearColor]];
textField.borderStyle = UITextBorderStyleRoundedRect;
[theAlert addSubview:textField];
[theAlert show];
[textField release];
[theAlert release];
alertView中没有textFiled,只有标题" Alert"和一个按钮" OK"
答案 0 :(得分:1)
我会就UIAlertView
Class Reference向您推荐Apple文档。具体来说
子类注释
UIAlertView类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改
所以这意味着您无法将子视图添加到UIAlertView
的实例中,最近的UIAlertView
仍有addSubview:
方法,因为UIAlertView
是一个具有此方法的UIView
的子类,但从iOS7开始,addSubview:
的方法UIAlertView
不再调用UIView
上的超级方法,它只是什么都不做。
所以基本上你所追求的是不可能的。
但是alertViewStyle
可以使用UIAlertViewStylePlainTextInput
,UITextField
会向UIAlertView
添加一个textFieldAtIndex:
,然后您可以使用{{1}方法访问UIAlertView
}}。但请注意,您无法再对此做任何事情,因为它是UIAlertView
层次结构的一部分,因此它再次按原样使用。
使用{{1}}层次结构进行混乱会使您的应用在
下的Apple Review流程中被拒绝2.5 - 使用非公开API的应用将被拒绝
答案 1 :(得分:0)
你的背景颜色很清晰,所以没有显示
[textField setBackgroundColor: [UIColor redColor]];.
并显示默认文本字段
theAlert.alertViewStyle = UIAlertViewStylePlainTextInput;
//or for username and password
theAlert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
// or for password
theAlert.alertViewStyle = UIAlertViewStyleSecureTextInput;
试试这个
答案 2 :(得分:0)
或者您可以设置alert.alertViewStyle = UIAlertViewStylePlainTextInput;
这将为您添加一个文本字段。你可以在中访问它
UIAlertView
使用
UITextField *textField = [alertView textFieldAtIndex:0];
答案 3 :(得分:0)
您可以将默认的alertView与textfield一起使用。为此您需要设置alertViewStyle
[message setAlertViewStyle:UIAlertViewStylePlainTextInput];
此消息是alertView的对象。
您可以使用委托方法获取文本字段值,如下所示
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"Login"]) {
UITextField *username = [alertView textFieldAtIndex:0];
UITextField *password = [alertView textFieldAtIndex:1];
NSLog(@"Username: %@\nPassword: %@", username.text, password.text);
}
}
答案 4 :(得分:-4)
如果您使用ios 7,请将以下代码添加到您的代码集
theAlert.alertViewStyle=UIAlertViewStylePlainTextInput;
完整代码
UIAlertView *theAlert = [[UIAlertView alloc] initWithTitle:@"Alert" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
UITextField *textField = [[UITextField alloc] initWithFrame: CGRectMake(12, 45, 260, 30)];
[textField setBackgroundColor: [UIColor greenColor]];
textField.borderStyle = UITextBorderStyleRoundedRect;
theAlert.alertViewStyle=UIAlertViewStylePlainTextInput;
[theAlert show];