AlertView с текстовым полем - начинающий - PullRequest
0 голосов
/ 22 марта 2012
 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"HELOOOOOOOO" message:@"write a number of text-lines/paragraph here"
                                                      delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Yes", nil];
       UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 95, 260, 25)];
       [myTextField setBackgroundColor:[UIColor whiteColor]];
       [alert addSubview:myTextField];
       [alert show];

Если вы присмотритесь, вы обнаружите, что атрибут message довольно длинный. Мне нужен этот просмотр предупреждений, чтобы сначала отобразить заголовок, а затем мое длинное сообщение, а затем текстовое поле и, наконец, 2 кнопки.

Но что здесь происходит, так это то, что поскольку message слишком длинный, текстовое поле перекрывается кнопками.

Как я могу решить это?

Ответы [ 4 ]

0 голосов
/ 19 июня 2012

Реализуйте этот фрагмент кода в файле реализации.

- (void)willPresentAlertView:(UIAlertView *)alertView
{
alertview.frame = CGRectMake(12, 95, 260, 25); //You can set a frame that suits to your needs
}

Этот делегат - (void)willPresentAlertView:(UIAlertView *)alertView будет вызываться перед отображением alertview, так что это лучший способ установить фрейм для вашего alertview.

Для получения дополнительной информации о видах aleert: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html#//apple_ref/occ/intf/UIAlertViewDelegate

0 голосов
/ 22 марта 2012

На самом деле, не имеет значения, как долго ваше сообщение. Размер предупреждения всегда будет таким, чтобы он подходил.

Один из способов исправить это, добавив группу \n в конец строки сообщения, что эквивалентно переводу строки.

РЕДАКТИРОВАТЬ: Если ваше сообщение настолько длинное, что оно помещает его в UIScrollView, вы ничего не сможете сделать, если не справитесь с серьезным взломом (иначе говоря, изменение границ UIAlertView, перемещая каждую кнопку вниз и т. Д.).

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

0 голосов
/ 23 марта 2012

Используйте символ перевода строки или перевода строки \n для этого:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AlertView"message:@"\nhello:.................... \nwrite here.................. \nwrite here....................." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];

see output alert image

Проверьте этот блог для получения дополнительной помощи

0 голосов
/ 22 марта 2012

Если это для iPhone, вы действительно не можете.UIAlertView не предназначен для обработки ввода.Расширенные сообщения отображаются в виде прокрутки, но вам действительно не следует добавлять UITextField в его иерархию представлений (например, это идет вразрез с их стандартами проектирования, и ваше приложение МОЖЕТ быть заблокировано!).

В этой ситуации этовероятно, было бы лучше использовать новый UIViewController для обработки показа вашего контента.

Опять же, единственное «действие», которое UIAlertView предназначен для выполнения, - это выполнение нескольких кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...