use*_*570 4 uitextfield uialertview ios ios7
在iOS7之前,我可以使用此代码UITextField向我添加(文本输入字段)UIAlertView.
UITextField *txtNewPassword = [[UITextField alloc] initWithFrame:secondTextFldRect];
txtNewPassword.delegate = self;
txtNewPassword.text = @"";
txtNewPassword.clearButtonMode = UITextFieldViewModeWhileEditing;
txtNewPassword.borderStyle = UITextBorderStyleRoundedRect;
txtNewPassword.autocapitalizationType = UITextAutocapitalizationTypeNone;
txtNewPassword.tag = kNewPasswordTxtFldTag;
[txtNewPassword setBackgroundColor:[UIColor whiteColor]];
[txtNewPassword setKeyboardAppearance:UIKeyboardAppearanceAlert];
[txtNewPassword setAutocorrectionType:UITextAutocorrectionTypeNo];
[txtNewPassword setPlaceholder:@"New password"];
[txtNewPassword setTextAlignment:UITextAlignmentLeft];
[txtNewPassword setSecureTextEntry:YES];
[alert addSubview:txtNewPassword];
[txtNewPassword release];
Run Code Online (Sandbox Code Playgroud)
更新到iOS7后,它停止工作 - 我的文本字段不再显示.更新代码的建议方法是什么?
您想使用UIAlertView的"新"(iOS 5)方法为您提供UITextField.alertViewStyle和textFieldAtIndex:
这会减少您的代码:
UIAlertView *alert = [[UIAlertView alloc] ...];
alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
UITextField *txtNewPassword = [alert textFieldAtIndex:0];
txtNewPassword.delegate = self;
txtNewPassword.text = @"";
txtNewPassword.clearButtonMode = UITextFieldViewModeWhileEditing;
txtNewPassword.tag = kNewPasswordTxtFldTag;
[txtNewPassword setPlaceholder:@"New password"];
Run Code Online (Sandbox Code Playgroud)
您的代码在iOS7上不起作用,因为从未允许将子视图添加到UIAlertView .视图层次结构始终是私有的.Apple开始执行此限制.
如果你想要一个定制的UIAlertView,你必须自己编写.子类UIView并使其看起来像UIAlertView.
UIAlertView* dialog = [[UIAlertView alloc] init];
[dialog setDelegate:self];
dialog.alertViewStyle=UIAlertViewStylePlainTextInput;
[dialog setTitle:@"Your Title"];
[dialog setMessage:@"your message"];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"Ok"];
UITextField *_UITextField = [dialog textFieldAtIndex:0];
_UITextField.placeholder = @"Placeholder";
_UITextField.keyboardType = UIKeyboardTypeEmailAddress;
[dialog show];
//uialertview delegate method
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex==1)//OK button
{
//do ur stuff
}
}
Run Code Online (Sandbox Code Playgroud)