UIAlertView с двумя текстовыми полями и двумя кнопками

Problem - Я хочу UIAlertView, который содержит заголовок, два текстовых поля с заполнителями и две кнопки. What I have done till now - Я использовал этот код, я получаю точный UIAlertView со всем этим, что я упомянул, но когда представление загружается, кажется, что сначала появляется внизу, а затем входит в середину представления.

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

}
</code>

Then I tried some of the non documented api's which are giving me the result I want but I am afraid that it may cause rejection of my app.

Итак, какие-либо решения для этого?

 Ankit Srivastava30 апр. 2012 г., 21:53
ваша проблема не совсем ясна ..
 Akshay30 апр. 2012 г., 21:55
@AnkitSrivastava Проблема с кодом: My AlertView появляется в нижней части окна в течение 1 секунды, а затем входит в середину представления (как и должно быть). Так что не выглядит как надо).

Ответы на вопрос(5)

Я использую следующие для той же цели

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

}

Если вы не используете безопасный символ во втором текстовом поле, добавьте

alertTextField2.secureTextEntry=NO;

я используюDDAlertPrompt в моих приложениях. Это легко и просто.

 12 апр. 2016 г., 22:49
ссылка не работает
 30 нояб. 2015 г., 05:41
Ссылка дает мне «404»
 26 апр. 2016 г., 11:01
должно быть достижимо сейчас :)

Просто переместите оператор show ниже, где вы устанавливаете рамку оповещения.

 Akshay30 апр. 2012 г., 21:59
Спасибо. Этот также работает как шарм. :)

Начиная с iOS 5 можно использовать свойствоalertViewStyle UIAlertView, чтобы получить различные виды предупреждений, также с текстовыми полями.

Возможные значения:

UIAlertViewStyleDefault UIAlertViewStyleSecureTextInput UIAlertViewStylePlainTextInput UIAlertViewStyleLoginAndPasswordInput

Вы можете использоватьUIAlertViewStyleLoginAndPasswordInput чтобы получить 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];

Вы можете получить доступ к значениям текстовых полей наalertView:clickedButtonAtIndex: UIAlertViewDelegate.

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
     NSLog(@"1 %@", [alertView textFieldAtIndex:0].text);
     NSLog(@"2 %@", [alertView textFieldAtIndex:1].text);
}
Решение Вопроса

у == 400 около нижней части экрана телефона. Тогда я представляю, что UIAlertView, который никогда не ожидал, будет иметь либо добавленные подпредставления, либо его набор фреймов, сбросить его фрейм для центрирования. Можете ли вы закомментировать эту самую последнюю строку и посмотреть, что произойдет?

 Akshay30 апр. 2012 г., 21:57
Я просто пропустил это или делал неправильно с самого начала. Спасибо за помощь. После комментирования последней строки, кажется, работает нормально. Спасибо :)

Ваш ответ на вопрос