Я делаю это в текущем проекте, чтобы разрешить ввод номера уровня, с которого нужно начать играть, поэтому мои переменные и методы называются такими, какие они есть; вам, вероятно, следует настроить их так, чтобы они имели для вас смысл.
В вашем контроллере приложения определите это как переменную экземпляра:
UITextField *levelEntryTextField;
Создайте его внутри приложенияDidFinishLaunching:
levelEntryTextField = [[UITextField alloc] initWithFrame:
CGRectMake(60, 165, 200, 90)];
[levelEntryTextField setDelegate:self];
Определите метод для активации текстового поля. Вы также должны объявить это в заголовочном файле для вашего контроллера приложения.
- (void)specifyStartLevel
{
[levelEntryTextField setText:@""];
[window addSubview:levelEntryTextField];
[levelEntryTextField becomeFirstResponder];
}
Это приведет к нажатию кнопки «возврат» на конце редактирования клавиатуры.
- (BOOL)textFieldShouldReturn:(UITextField*)textField {
//Terminate editing
[textField resignFirstResponder];
return YES;
}
Это срабатывает, когда редактирование фактически завершено.
- (void)textFieldDidEndEditing:(UITextField*)textField {
if (textField==levelEntryTextField) {
[levelEntryTextField endEditing:YES];
[levelEntryTextField removeFromSuperview];
// here is where you should do something with the data they entered
NSString *result = levelEntryTextField.text;
}
}
Теперь, чтобы действительно привести вещи в движение, вы куда-то положили это. Я вызываю это из одного из моих классов Scene в ответ на действие пользователя:
[[[UIApplication sharedApplication] delegate] specifyStartLevel];