2012-04-30 15 views
8

Problema - Quiero un UIAlertView que contenga un Título, dos campos de texto con marcadores de posición y dos botones. Lo que he hecho hasta ahora - He usado este código, estoy obteniendo el UIAlertView exacto con todo lo que he mencionado pero cuando la vista se está cargando parece aparecer primero en la parte inferior y luego aparece en medio de la vista.UIAlertView con dos campos de texto y dos botones

-(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]; 
    [email protected]"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]; 
    [email protected]"Password"; 
    passwordTextField.secureTextEntry=YES; 
    [disclaimerAgreedAlertView addSubview:passwordTextField]; 

    disclaimerAgreedAlertView.tag=99; 

    [disclaimerAgreedAlertView show]; 
    disclaimerAgreedAlertView.frame= CGRectMake(5, 400, 320, 160); 

} 

Luego probé algunos de los de los no documentados api que me están dando el resultado que quiero, pero me temo que puede causar el rechazo de mi aplicación.

¿Alguna solución para esto?

+0

su problema no es del todo claro .. –

+0

@AnkitSrivastava El problema con el código es que My AlertView aparece en la parte inferior de la vista durante 1 segundo y luego entra en el centro de la vista (como debería venir). Entonces no está buscando como debería). – Akshay

Respuesta

4

y == 400 está sobre la parte inferior de la pantalla de un teléfono. Me imagino entonces, el UIAlertView que nunca esperó tener las subvistas agregadas o su conjunto de cuadros, reiniciar su marco para centrarse. ¿Puedes comentar esa última línea y ver qué pasa?

+0

Me lo perdí o lo estaba haciendo mal desde que comencé. Gracias por la ayuda. Después de comentar la última línea, parece estar funcionando bien. Gracias :) – Akshay

4

sólo hay que mover la declaración se muestra a continuación, donde se establece el marco de la alerta

+0

Gracias. Este también funciona como encanto.:) – Akshay

2

utilizo DDAlertPrompt en mis aplicaciones. Es fácil y una clase directa.

+0

El enlace me da "404" –

+0

el enlace está roto –

+0

debe ser alcanzable ahora :) – mstottrop

61

A partir de iOS 5 es posible utilizar la propiedad alertViewStyle de UIAlertView para obtener diferentes tipos de vistas de alerta, también con campos de texto.

Valores posibles:

  • UIAlertViewStyleDefault
  • UIAlertViewStyleSecureTextInput
  • UIAlertViewStylePlainTextInput
  • UIAlertViewStyleLoginAndPasswordInput

Puede utilizar el UIAlertViewStyleLoginAndPasswordInput para obtener un UIAlertView con dos campos de texto y luego se puede personalizar algunas de las propiedades de los campos de texto:

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

Se puede acceder a los valores de los campos de texto en el alertView: clickedButtonAtIndex: de UIAlertViewDelegate.

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    NSLog(@"1 %@", [alertView textFieldAtIndex:0].text); 
    NSLog(@"2 %@", [alertView textFieldAtIndex:1].text); 
} 
2

utilizo siguiente para el mismo propósito

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

} 

Si no se utiliza el carácter seguro en el segundo campo de texto añadir

alertTextField2.secureTextEntry=NO; 
Cuestiones relacionadas