Frage

Ich habe eine Datenanwendung Kern, die eine Navigationssteuerung verwendet, um eine Detailansicht bohren nach unten und dann, wenn Sie bearbeiten eine der Datenzeilen in der Detailansicht Sie für die, dass einzelne Zeile in eine Bearbeiten-Ansicht getroffen zu bekommen, wie in Apples CoreDataBooks Beispiel (außer CoreDataBooks nur einen UITextField auf seinem eigenen verwendet, nicht eine, die ist ein Subview von UITableViewCell wie bei mir)!

Die Bearbeitungsansicht ist ein UITableviewController, die mit einer einzigen Abschnitt einreihigen und eine UITextfield in der Zelle ihre Tabelle erstellt, programmatisch.

Was ich will, geschehen ist, wenn Sie eine Zeile zu bearbeiten und die Bearbeitungsansicht wählen auf den nav Stapel geschoben und die Bearbeitungsansicht wird über den Bildschirm animiert bewegen, mag ich das Textfeld als firstResponder ausgewählt werden, so dass die Tastatur ist bereits als die Ansicht über den Bildschirm bewegt zu nehmen Stellung. Wie in der Kontakte-Anwendung oder in der CoreDataBooks App.

ich zur Zeit den folgenden Code in meiner Anwendung hat, die den Blick auf Last verursacht und dann sehen Sie die Tastatur erscheinen (das ist nicht das, was ich will, ich will die Tastatur schon da sein)

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

Sie können dies nicht in -viewWillAppear setzen, wie das Textfeld noch nicht erstellt worden ist, so theTextField Null ist. In dem CoreDataBooks App, wo sie erreichen, was ich will sie aus einer Feder ihre Ansicht laden, so dass sie den gleichen Code aber in -viewWillAppear verwenden, wie das Textfeld bereits erstellt wurde!

Gibt es trotzdem von diesem zu umgehen, ohne eine Spitze zu schaffen, mag ich die Umsetzung programatic halten größere Flexibilität zu ermöglichen.

Vielen Dank

War es hilfreich?

Lösung

mit dem Apple Dev-Support-Team Nach dem Gespräch habe ich eine Antwort!

Was Sie tun müssen, ist ein Off-Screen-UITextField in -(void)loadView; zu erstellen und es dann als Ersthelfer dann auf der viewDidLoad Methode Sie die UITextField im UITableViewCell einstellen können Ersthelfer sein. Heres einige Beispiel-Code (Ich erinnere mich, dies in einem UITableViewController mache, damit ich die Tableview und erschaffe!

- (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];
}

Ich hoffe, das jemand hilft in der gleichen Position wie ich fest!

Wenn jemand anderes kann einen besseren Weg finden, dies zu tun bitte sagen.

Andere Tipps

Versuchen Sie es in viewDidAppear Methode tun, funktioniert für mich.

Ich denke, die offensichtliche Lösung ist das Textfeld in der init Methode der View-Controller zu erstellen. Das ist in der Regel, wo Sie die Ansicht konfigurieren, da ein View-Controller eine besiedelte Ansicht Eigenschaft erfordern.

Dann können Sie das Textfeld als Ersthelfer in viewWillAppear gesetzt und die Tastatur sollte wie die Ansicht Folien sichtbar sein.

Sie haben versucht, die UINavigationController Delegat Methoden verwenden:?

Navigation: willShowViewController: animated:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top