UIAlertView с UITextField и длинным сообщением - PullRequest
1 голос
/ 29 ноября 2011

Я использую этот код для реализации UITextField в моем UIAlertView:

UIAlertView *receivedAlert = [[UIAlertView alloc] initWithTitle:message message:[NSString stringWithFormat:@"%@\n\n", [itemNameRows objectAtIndex:currentItem]] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Submit", nil];

receivedField = [[UITextField alloc] initWithFrame:CGRectMake(16,70,252,25)];
receivedField.keyboardType = UIKeyboardTypeNumberPad;
receivedField.textAlignment = UITextAlignmentCenter;
receivedField.borderStyle = UITextBorderStyleRoundedRect;
receivedField.keyboardAppearance = UIKeyboardAppearanceAlert;

[receivedAlert addSubview:receivedField];
[receivedAlert show];
[receivedAlert release];

Проблема возникает, когда у меня есть сообщение, которое длиннее 2 строк.Размер предупреждения изменяется должным образом, но текстовое поле не перемещается вниз, чтобы вместить более длинную строку.Любые идеи?

Я могу согласиться с сокращением строки сообщения, если мне нужно.

1 Ответ

2 голосов
/ 29 ноября 2011

Вы не должны добавлять подпредставления в UIAlertView.Документы Apple явно запрещают это («Иерархия представлений для этого класса является частной и не должна изменяться.»), И, в дополнение к тому, что вас могут отклонить, может также привести к сбою в будущем обновлении ОС (это произошло однажды уже на iOS 3.1).

В iOS 5 добавлены стили представления предупреждений, чтобы можно было безопасно использовать текстовые поля в представлениях предупреждений.Помимо UIAlertViewStyleDefault, существуют UIAlertViewStyleSecureTextInput, UIAlertViewStylePlainTextInput и UIAlertViewStyleLoginAndPasswordInput.

. Создайте представление предупреждения и задайте для свойства alertViewStyle соответствующее значение.Затем вы можете получить текстовые поля, используя -textFieldAtIndex:.Стили безопасного и простого текста имеют одно текстовое поле с индексом 0, по умолчанию нет текстовых полей, а логин и пароль имеют два текстовых поля с индексами 0 (логин) и 1 (пароль).

См. Справочник по классам UIAlertView для получения дополнительной информации.

...