2012-04-30 19 views
8

Problem - Chcę UIAlertView, który zawiera tytuł, dwa pola tekstowe z symbolami zastępczymi i dwoma przyciskami. Co zrobiłem do tej pory - Użyłem tego kodu, otrzymuję dokładny UIAlertView z tymi wszystkimi, które wspomniałem, ale kiedy widok jest ładowany wydaje się, że pojawia się na dole jako pierwszy, a następnie pojawia się w środku widok.UIAlertView z dwoma obszarami tekstowymi i dwoma przyciskami

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

} 

Potem próbowałem niektóre niezarejestrowanych udokumentowane API, które daje mi wynik chcę, ale obawiam się, że może to spowodować odrzucenie mojej aplikacji.

Jakieś rozwiązania tego problemu?

+0

Twój problem nie jest do końca jasne .. –

+0

@AnkitSrivastava Problem z kodem to Mój AlertView pojawia się na dole widoku przez 1 sekundę, a następnie pojawia się w środku widoku (tak jak powinien). Więc nie wygląda tak, jak powinien). – Akshay

Odpowiedz

4

y == 400 znajduje się u dołu ekranu telefonu. Wyobrażam sobie wtedy UIAlertView, który nigdy nie spodziewał się, że albo doda subviews, albo ustawi ramkę, zresetuje, żeby ramka była wyśrodkowana. Czy możesz skomentować tę ostatnią linię i zobaczyć, co się dzieje?

+0

Po prostu spudłowałem lub robiłem to źle od samego początku. Dzięki za pomoc. Po skomentowaniu ostatniej linii wydaje się, że działa dobrze. Dzięki :) – Akshay

4

Wystarczy przesunąć oświadczenie Należy wskazać, gdzie ustawić alarm jest rama

+0

Dziękuję. Ta działa również jak urok.:) – Akshay

2

używam DDAlertPrompt w moich zastosowaniach. To łatwe i lekcja w dół.

+0

Link daje mi "404" –

+0

link jest zepsuty –

+0

powinien być osiągalny teraz :) – mstottrop

61

Począwszy od iOS 5 można użyć właściwości alertViewStyle z UIAlertView dostać inny typ alertu poglądów, także z pól tekstowych.

Możliwe wartości:

  • UIAlertViewStyleDefault
  • UIAlertViewStyleSecureTextInput
  • UIAlertViewStylePlainTextInput
  • UIAlertViewStyleLoginAndPasswordInput

Można użyć UIAlertViewStyleLoginAndPasswordInput do uzyskania UIAlertView z dwóch pól tekstowych, a następnie można dostosować pewne właściwości pól tekstowych:

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

Można uzyskać dostęp do wartości pól tekstowych na alertView: clickedButtonAtIndex: z UIAlertViewDelegate.

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

używam następujących w tym samym celu

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

} 

Jeśli nie używać bezpiecznego znak w drugim polu tekstowym dodać

alertTextField2.secureTextEntry=NO; 
Powiązane problemy