8

問題- タイトル、プレースホルダー付きの 2 つのテキストフィールド、および 2 つのボタンを含む 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 をいくつか試してみましたが、これにより必要な結果が得られましたが、アプリが拒否される可能性があるのではないかと心配しています。

それで、これに対する解決策はありますか?

4

5 に答える 5

61

iOS 5 以降では、UIAlertView のプロパティalertViewStyleを使用して、テキスト フィールドを含むさまざまなタイプのアラート ビューを取得できます。

可能な値:

  • UIAlertViewStyleDefault
  • UIAlertViewStyleSecureTextInput
  • UIAlertViewStylePlainTextInput
  • UIAlertViewStyleLoginAndPasswordInput

UIAlertViewStyleLoginAndPasswordInput を使用して、2 つのテキスト フィールドを持つ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);
}
于 2012-11-29T19:50:58.747 に答える
4

y==400 は、電話画面の下部についてです。その場合、サブビューが追加されたり、フレームが設定されたりすることを決して期待していなかった UIAlertView が、フレームをリセットして中央に配置されると想像します。最後の行をコメントアウトして、何が起こるか見てもらえますか?

于 2012-04-30T19:54:13.907 に答える
4

アラートのフレームを設定する場所の下に show ステートメントを移動するだけです

于 2012-04-30T19:54:42.017 に答える
2

同じ目的で以下を使用します

-(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];

}

2 番目のテキスト フィールドにセキュア キャラクタを使用しない場合は、追加します

alertTextField2.secureTextEntry=NO;
于 2014-07-08T09:55:36.533 に答える
2

アプリケーションでDDAlertPromptを使用しています。簡単なドロップインクラスです。

于 2012-04-30T20:37:16.207 に答える