Как получить значение текстового поля с помощью представления предупреждений, используя Cocos2d?
-
03-07-2019 - |
Вопрос
Я пытаюсь разработать приложение, используя Cocos2d. Я не могу получить значение из текстового поля. Как получить значение текстового поля (в виде предупреждения) с помощью Cocos2d?
-(void)timed1: (id)sender
{
UIAlertView* dialog = [[[UIAlertView alloc] init] retain];
[dialog setDelegate:self];
[dialog setTitle:@"Enter Time:"];
[dialog setMessage:@" "];
UITextField * nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
[dialog addSubview:nameField];
[nameField setBackgroundColor:[UIColor whiteColor]];
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 70.0);
[dialog setTransform: moveUp];
[dialog setBackgroundColor:[UIColor clearColor]];
[dialog addButtonWithTitle:@"Done"];
[dialog show];
nameField.clearButtonMode = UITextFieldViewModeWhileEditing;
nameField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
nameField.keyboardAppearance = UIKeyboardAppearanceAlert;
nameField.autocapitalizationType = UITextAutocapitalizationTypeWords;
// timeStatus is a int type global variable
timeStatus =[nameField.text intValue]; // this line not working i can't getting value namefield
[dialog release];
[nameField release];
}
Решение
Листы действий и оповещения обрабатываются асинхронно. В вашем случае сообщение [dialog show] просто планирует событие show для некоторого более позднего выполнения (обрабатывается основным циклом выполнения). Если вы введете несколько NSLog (), вы увидите, что сообщение [show] возвращается почти сразу, и в этот момент ваш пользователь не ввел никаких данных, текст nameField пуст, и это преобразуется в int из 0 . р>
Вы хотите, чтобы блокировочный, модальный диалог с вводами - листы действий и предупреждения не были предназначены для ввода пользователем, кроме нажатий кнопок «да / нет / отмена». Вам придется составить собственное представление: не слишком сложно, но это потребует больше работы, чем использование листа действий / оповещения.