Подпредставление UITextField UITableViewCell для становления первым респондентом?

У меня есть базовое применение данных, которое использует контроллер навигации для развертки к представлению детали и затем если Вы редактируете одну из строк данных в представлении детали, Вы взяты к Представлению Редактирования для, что одна строка, как в примере Apples CoreDataBooks (кроме CoreDataBooks только использует a UITextField самостоятельно, не тот, который является подпредставлением UITableViewCell как мой)!

Представление редактирования является a UITableviewController который составляет его таблицу с единственной одной строкой раздела и a UITextfield в ячейке, программно.

То, что я хочу произойти, - когда Вы выбираете строку для редактирования, и представление редактирования продвинуто на военно-морской стек, и представление редактирования анимировано, преодолев экран, я хочу, чтобы текстовое поле было выбрано как firstResponder так, чтобы клавиатура уже показала, поскольку представление преодолевает экран для занимания позиции. Как в приложении Контактов или в Приложении CoreDataBooks.

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

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [theTextField becomeFirstResponder];
}

Вы не можете вставить это -viewWillAppear поскольку текстовое поле еще не было создано так theTextField ноль. В Приложении CoreDataBooks, где они достигают того, что я хочу, они загружают свое представление из пера, таким образом, они используют тот же код, но в -viewWillAppear поскольку текстовое поле было уже создано!

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

Большое спасибо

17
задан Vineet Singh 19 September 2013 в 09:37
поделиться

3 ответа

После разговора с командой поддержки Apple Dev у меня есть ответ !

Что вам нужно сделать, так это создать закадровый UITextField в - (void) loadView; , а затем установить его в качестве первого респондента, а затем в viewDidLoad вы можете установить UITextField в UITableViewCell в качестве первого респондента. Вот пример кода (помните, что я делаю это в UITableViewController , поэтому я также создаю табличное представление!

- (void)loadView
{
    [super loadView];

    //Set the view up.
    UIView *theView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.view = theView;
    [theView release];

    //Create an negatively sized or offscreen textfield
    UITextField *hiddenField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, -10, -10)];
    hiddenTextField = hiddenField;
    [self.view addSubview:hiddenTextField];
    [hiddenField release];

    //Create the tableview
    UITableView *theTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStyleGrouped];
    theTableView.delegate = self;
    theTableView.dataSource = self;
    [self.view addSubview:theTableView];
    [theTableView release];

    //Set the hiddenTextField to become first responder
    [hiddenTextField becomeFirstResponder];

    //Background for a grouped tableview
    self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    //Now the the UITableViewCells UITextField has loaded you can set that as first responder
    [theTextField becomeFirstResponder];
}

Надеюсь, это поможет любому, кто застрял в том же положении, что и я!

Если кто-нибудь иначе вы можете найти лучший способ сделать это, пожалуйста, скажите.

15
ответ дан 30 November 2019 в 13:12
поделиться

Я думаю, что очевидным решением является создание текстового поля в методе init контроллера представления. Обычно вы настраиваете представление, потому что контроллеру представления требуется заполненное свойство представления.

Затем вы можете установить текстовое поле в качестве первого респондента в viewWillAppear , и клавиатура должна быть видна при перемещении представления.

3
ответ дан 30 November 2019 в 13:12
поделиться

пробовали ли вы использовать методы делегата uinavigationcontroller?:

navigationController: willShowViewController: animated:

2
ответ дан 30 November 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: