В диалоговом окне оповещения iPhone появляется несколько клавиатур?

Я настраиваю оповещение с текстовым полем, чтобы игроки могли ввести свое имя для высокой оценки. Игра ориентирована в ландшафтном режиме, но когда я звоню, чтобы показать предупреждение, предупреждение появляется в портретном режиме, когда отображаются две клавиатуры: одна в альбомной и одна (размером с альбомную) в портретном режиме. Вот код, который я использую для настройки диалога предупреждений:

    UIAlertView* dialog = [[[UIAlertView alloc] init] retain];
[dialog setDelegate:self];
[dialog setTitle:@"Enter Name"];
[dialog setMessage:@" "];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"OK"];
[dialog addTextFieldWithValue:@"name" label:@""];
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 100.0);
[dialog setTransform: moveUp];
[dialog show];
[dialog release];

Как сделать так, чтобы предупреждение показывалось в альбомной ориентации и не показывало две клавиатуры?

Спасибо Бен

17.12.2008 23:08:52
У вас есть скриншот этого? (просто для удовольствия!)
squelart 4.01.2009 21:31:05
1 ОТВЕТ
РЕШЕНИЕ

Для тех, кто может позаботиться, вот рабочее решение, которое правильно работает в ландшафтном режиме:

UIAlertView* dialog = [[[UIAlertView alloc] init] retain];
[dialog setDelegate:self];
[dialog setTitle:@"Enter Name"];
[dialog setMessage:@" "];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"OK"];

nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
[nameField setBackgroundColor:[UIColor whiteColor]];
[dialog addSubview:nameField];
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 100.0);
[dialog setTransform: moveUp];
[dialog show];
[dialog release];
[nameField release];

Убедитесь, что вы создали UITextField * nameField; в вашем .h файле вы можете получить текст, введенный пользователем, выполнив: inputText = [nameField text];

в - (void) alertView: (UIAlertView *) предупреждение clickedButtonAtIndex: (NSInteger) метод buttonIndex.

2
18.12.2008 00:31:20
Я вижу, вы делаете диалоговое окно = [[[UIAlertView alloc] init] сохранить] и [диалогового выпуска]. И alloc, и retain должны сочетаться с одним выпуском, так что я думаю, что есть утечка (если только в вашей программе нет другого выпуска); 'retain' кажется ненужным в любом случае, так как alloc делает это тоже.
squelart 4.01.2009 21:38:57
Так что я должен отказаться от удержания и выпуска или что будет подходящим решением? Я думаю, что что-то упустил ...
user21293 4.02.2009 07:04:58
@ user21293: alloc уже сохраняет данные, поэтому вам не нужно сохранять их снова
user102008 3.12.2010 23:21:56