Есть ли в iphone функция всплывающего редактора? - PullRequest
2 голосов
/ 12 ноября 2008

Я хотел бы открыть простой диалог с окном редактора, чтобы пользователь мог ввести какое-то значение, а затем просто вернуться. Мне интересно, имеет ли iPhone SDK такую ​​поддержку.

Спасибо.

Ответы [ 4 ]

7 голосов
/ 13 ноября 2008

Я нашел решение по адресу: http://www.iphonedevsdk.com/forum/iphone-sdk-development/1704-uitextfield-inside-uialertview.html

Вот код, который работает для меня.

UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Your title here" message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];

CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, 130.0);
[myAlertView setTransform:myTransform];

[myTextField setBackgroundColor:[UIColor whiteColor]];
[myAlertView addSubview:myTextField];
[myAlertView show];
[myAlertView release];
4 голосов
/ 12 ноября 2008

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

1 голос
/ 11 мая 2009

Совет по изменению размера вашего UIAlertView ...

Как писал выше / ниже Милен Милковски, если вы установите делегата для UIAlertView:

UIAlertView* theAlert = [[UIAlertView alloc] initWithTitle:@"Lah"
                                                   message:@"dee dah"
                                                  delegate:self
                                         cancelButtonTitle:nil
                                         otherButtonTitles:nil];
//NSLog(@"Pre Show: alert frame x,y: %f,%f, alert frame width,height: %f,%f",  theAlert.frame.origin.x,theAlert.frame.origin.y, theAlert.frame.size.width, theAlert.frame.size.height);
[retrievingListAlert show];

Затем вы можете изменить фрейм UIAlertView, определив следующий обратный вызов UIAlertView (в классе делегатов - в данном случае, поскольку мы использовали self, тот же класс, что и для UIAlertView):

(void)willPresentAlertView:(UIAlertView *)alertView {
    //NSLog(@"willPresentAlertView: alert frame midx,midy: %f,%f, alert frame width,height: %f,%f",  alertView.frame.origin.x, alertView.frame.origin.y, alertView.frame.size.width, alertView.frame.size.height);
    alertView.frame = CGRectMake( x, y, width, heigth ); 
}

Я обнаружил, что установка фрейма в другое время не будет работать. Похоже, что функция show изменяет фрейм, предположительно при автоматическом изменении его содержимого.

1 голос
/ 09 января 2009

Добавьте эту функцию к своему коду, который вызывается перед отображением оповещения.

  • (void) willPresentAlertView: (UIAlertView *) alertView { alertView.frame = CGRectMake (x, y, ширина, высота); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...