Вопрос

У меня есть основное приложение для данных, которое использует навигационный контроллер для сверления до подробного представления, а затем, если вы редактируете один из строк данных в подробном представлении, который вы получаете в редактируемое представление для этой одной строки, как в яблоках CoredataBooks Пример (кроме Coredatabooks использует только UITextField самостоятельно, не тот, который является субвезонным UITableViewCell как мой)!

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

То, что я хочу произойти, это когда вы выбираете ряд для редактирования, и вид редактирования нажимается на стек навигации, а представление редактирования анимировано перемещение по экрану, я хочу выбрать текстовое поле, чтобы выбранная как FIRSTRSTRESPONDER, так что клавиатура уже отображается Когда вид перемещается через экран, чтобы занять положение. Как в приложении контактов или в приложении Coredatabooks.

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

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

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

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

Огромное спасибо

Это было полезно?

Решение

После разговора с командой поддержки 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];
}

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

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

Другие советы

Попробуйте сделать это в ViewDiDAppear Method, работает для меня.

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

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

Вы пытались использовать методы делегата UinaviggationController?:

NavipateController: WillShowviewController: Animated:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top