Как я могу начать текстовое поле в UIAlertView - PullRequest
29 голосов
/ 08 марта 2012

Обновленный UIAlertView теперь имеет стиль, который позволяет вводить текстовое поле в UIAlertView, т.е.

alert.alertViewStyle = UIAlertViewStylePlainTextInput;

Это хорошо работает, но я хотел инициализировать вводимый текст с текстом по умолчанию, например "sample".

Я вижу, что в прошлом люди использовали недокументированный API-интерфейс (который прекрасно работает)

[alert addTextFieldWithValue:@"sample text" label:@"Text Field"];

но поскольку это все еще не официальный публичный API Apple, я не могу его использовать.

Есть ли другой способ справиться с этим? Я попытался выполнить инициализацию в willPresentAlertView, но текстовое поле, похоже, доступно только для чтения.

Спасибо

Ответы [ 5 ]

57 голосов
/ 08 марта 2012

У UIALertView есть метод textFieldAtIndex:, который возвращает необходимый объект UITextField.

Для UIAlertViewStylePlainTextInput индекс текстового поля равен 0.

Youзатем можно установить свойство заполнителя (или текста) текстового поля:

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
textField.placeholder = @"your text";

Ссылка на класс UIAlertView

9 голосов
/ 13 декабря 2013

Простой способ сделать

 UIAlertView *alerView = [[UIAlertView alloc] initWithTitle:@"your title" message:@"your message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
    alerView.alertViewStyle = UIAlertViewStylePlainTextInput;
    [[alerView textFieldAtIndex:0] setPlaceholder:@"placeholder text..."];
    [alerView show];
8 голосов
/ 08 марта 2012

Не проверено, но я предполагаю, что это будет работать:

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];
UITextField* textField = [alert textFieldAtIndex:0];
textField.text = @"sample";
[alert show];
6 голосов
/ 31 декабря 2012

Для установки значения по умолчанию в uiAlertView это будет работать.

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
[textField setText:@"My default text"];
[alert show];
0 голосов
/ 07 ноября 2013
- (IBAction)showMessage:(id)sender {
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Add New Category"
                                                      message:nil
                                                     delegate:self 
                                            cancelButtonTitle:@"Add"
                                            otherButtonTitles:@"Cancel", nil];
    [message setAlertViewStyle:UIAlertViewStylePlainTextInput];
    [message show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"Add"])
    {
        UITextField *username = [alertView textFieldAtIndex:0];
        NSLog(@"Category Name: %@", username.text);
    }
}
...