我有一个iOS应用程序,我最近更新以处理UIAlertView / SubView问题,导致文本框呈现为清晰或白色(或根本不呈现,不确定哪个)。无论如何,这是一个相对简单的问题,因为我是Obj-C的新手,但我如何从应用程序中的另一个调用中获取新文本框的值?
这是我的UIAlertView:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Password"
message:@"Enter your Password\n\n\n"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Login", nil];
alert.frame = CGRectMake( 0, 30, 300, 260);
它曾经存储为UITextField,然后作为子视图添加到UIAlertView:
psswdField = [[UITextField alloc] initWithFrame:CGRectMake(32.0, 65.0, 220.0, 25.0)];
psswdField.placeholder = @"Password";
psswdField.secureTextEntry = YES;
psswdField.delegate = self;
psswdField.tag = 1;
[psswdField becomeFirstResponder];
[alert addSubview:psswdField];
[alert show];
[alert release];
现在已全部注释掉,而我将其重写为:
alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
这是我用来检索值的方式:
[psswdField resignFirstResponder];
[psswdField removeFromSuperview];
activBkgrndView.hidden = NO;
[activInd startAnimating];
[psswdField resignFirstResponder];
[self performSelectorInBackground:@selector(loadData:) withObject:psswdField.text];
现在我对如何从该文本框中获取值发送到loadData感到困惑。
答案 0 :(得分:5)
您不希望将自己的文本字段添加到警报视图中。您不应该直接将子视图添加到UIAlertView。您希望将UIAlertView上的alertViewStyle
属性设置为UIAlertViewStyleSecureTextInput
,这将为您添加文本字段。所以你要用这样的一行设置它:
alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
然后,您将使用委托方法- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
检索此文本字段中的值,您必须将该方法添加到您设置为UIAlertView委托的类中。以下是该委托方法的示例实现:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
// Make sure the button they clicked wasn't Cancel
if (buttonIndex == alertView.firstOtherButtonIndex) {
UITextField *textField = [alertView textFieldAtIndex:0];
NSLog(@"%@", textField.text);
}
}