带有两个文本字段和两个按钮的 UIAlertView
Posted
技术标签:
【中文标题】带有两个文本字段和两个按钮的 UIAlertView【英文标题】:UIAlertView with Two TextFields and Two Buttons 【发布时间】:2012-04-30 19:46:01 【问题描述】:问题 - 我想要一个 UIAlertView,它包含一个标题、两个带占位符的文本字段和两个按钮。 到目前为止我所做的 - 我已经使用了这段代码,我得到了我提到的所有这些的确切 UIAlertView 但是当视图被加载时似乎首先出现在底部然后出现进入视图的中间。
-(void)showalert
disclaimerAgreedAlertView = [[UIAlertView alloc] initWithTitle:@" "
message:@" "
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Login", nil];
userNameTextField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 15.0, 245.0, 25.0)];
userNameTextField.delegate=self;
[userNameTextField setBackgroundColor:[UIColor whiteColor]];
[userNameTextField setKeyboardType:UIKeyboardTypeDefault];
userNameTextField.placeholder=@"Username";
userNameTextField.secureTextEntry=NO;
[disclaimerAgreedAlertView addSubview:userNameTextField];
passwordTextField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
passwordTextField.delegate=self;
[passwordTextField setBackgroundColor:[UIColor whiteColor]];
[passwordTextField setKeyboardType:UIKeyboardTypeDefault];
passwordTextField.placeholder=@"Password";
passwordTextField.secureTextEntry=YES;
[disclaimerAgreedAlertView addSubview:passwordTextField];
disclaimerAgreedAlertView.tag=99;
[disclaimerAgreedAlertView show];
disclaimerAgreedAlertView.frame= CGRectMake(5, 400, 320, 160);
然后我尝试了一些未记录的 api,它们给了我想要的结果,但我担心它可能会导致我的应用被拒绝。
那么,有什么解决办法吗?
【问题讨论】:
你的问题不太清楚.. @AnkitSrivastava 代码问题是我的 AlertView 出现在视图底部 1 秒钟,然后进入视图中间(应该会出现)。所以它看起来不像它应该的那样)。 【参考方案1】:从 ios 5 开始,可以使用 UIAlertView 的 alertViewStyle 属性来获取不同类型的警报视图,也可以使用文本字段。
可能的值:
UIAlertViewStyleDefault UIAlertViewStyleSecureTextInput UIAlertViewStylePlainTextInput UIAlertViewStyleLoginAndPasswordInput您可以使用 UIAlertViewStyleLoginAndPasswordInput 来获取一个带有两个文本字段的 UIAlertView,然后您可以自定义 textFields 的一些属性:
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Your_Title" message:@"Your_message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[av setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
// Alert style customization
[[av textFieldAtIndex:1] setSecureTextEntry:NO];
[[av textFieldAtIndex:0] setPlaceholder:@"First_Placeholder"];
[[av textFieldAtIndex:1] setPlaceholder:@"Second_Placeholder"];
[av show];
您可以访问 UIAlertViewDelegate 的 alertView:clickedButtonAtIndex: 上文本字段的值。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
NSLog(@"1 %@", [alertView textFieldAtIndex:0].text);
NSLog(@"2 %@", [alertView textFieldAtIndex:1].text);
【讨论】:
【参考方案2】:y==400 大约是手机屏幕的底部。我想,UIAlertView 从未期望添加子视图或其框架集,重置它的框架以居中。你能把最后一行注释掉看看会发生什么吗?
【讨论】:
我只是错过了它,或者从开始就做错了。谢谢您的帮助。在评论最后一行之后,它似乎工作正常。谢谢:)【参考方案3】:只需将 show 语句移到您设置警报框架的位置即可
【讨论】:
【参考方案4】:我出于同样的目的使用以下内容
-(void)alertView
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@""
message:@"Enter User & Password"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Login", nil];
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
UITextField * alertTextField1 = [alert textFieldAtIndex:0];
alertTextField1.keyboardType = UIKeyboardTypeDefault;
alertTextField1.placeholder = @"User";
UITextField * alertTextField2 = [alert textFieldAtIndex:1];
alertTextField2.keyboardType = UIKeyboardTypeDefault;
alertTextField2.placeholder = @"Password";
[alert show];
如果您不在第二个文本字段中使用安全字符,请添加
alertTextField2.secureTextEntry=NO;
【讨论】:
【参考方案5】:我在我的应用程序中使用DDAlertPrompt。这很容易,而且是一个临时课程。
【讨论】:
链接给了我“404” 链接失效 现在应该可以访问了 :)以上是关于带有两个文本字段和两个按钮的 UIAlertView的主要内容,如果未能解决你的问题,请参考以下文章