2009-08-03 4 views
1

OK hat, habe ich einen Bildschirm in meinem iPhone-Anwendung, die wie folgt aussieht: sample screen http://matthewcave.com/images/iPhone.jpgDer Versuch, built-in UIAnimations zu bestellen, nicht viel Erfolg

Wenn die auf Anmerkungen hinzufügen Zelle berührt wird, die ich für das möchte Die Tastatur verschwindet, DANN möchte ich, dass sie den Bildschirm Notizen bearbeiten modal anzeigt (der auch eine Tastatur hat, aber ich möchte, dass sie wieder auf dem Bildschirm animiert).

Im Moment animiert es alles auf einmal (die Tastatur verschwindet nie, sie ändert nur ihr Aussehen und die neue Ansicht animiert scheinbar unter der Tastatur). Der ganze Effekt funktioniert richtig, aber es ist ein bisschen herky-ruckartig, und ich denke, das Schieben der Tastatur vor dem Aufspringen der modalen Ansicht auf dem Bildschirm wäre glatter. Ich habe gesehen, dass andere Anwendungen tun, was ich will (Dinge zum Beispiel), also weiß ich, dass es möglich ist.

Kann jemand mich in die richtige Richtung weisen jede der Übergänge auf Herstellung individuell geschehen, anstatt alles auf einmal?

Bearbeiten: Wie angefordert, hier ist ein Teil des Codes, den ich benutze. Leider liest es sich in Objective C fast genau so wie in Englisch.

UITableViewController* tableViewController = (UITableViewController*)tableView.dataSource; 

    AddNotesViewController* addNotesViewController = [[AddNotesViewController alloc] initWithWine:[self myWine]]; 

    UINavigationController* addNotesNavController = [[[UINavigationController alloc] initWithRootViewController:addNotesViewController] autorelease]; 

    // tell the name override cell to resign if they need to 
    [(NewWineViewController*)tableView.dataSource resignNameCell]; 

    //I'd like the animation caused by the resign to complete before proceeding. 

    [tableViewController.navigationController presentModalViewController:addNotesNavController animated:YES]; 
+0

Können Sie Snippets des Codes, den Sie gerade haben, veröffentlichen? –

Antwort

3

ich denke, das sollte funktionieren:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITextField *textField = // the field that the keyboard is up for 
    [textField resignFirstResponder]; 

    NSTimeInterval delay = 2.0; // i.e., until keyboard has disappeared 
    [self performSelector: @selector(transitionToEditNotesScreen) withObject: nil afterDelay: delay]; 
} 

- (void) transitionToEditNotesScreen 
{ 
    // the code you have above to bring on the modal view controller   
} 

Fügen Sie den folgenden Code in der Steuerung für Ihre Notizen bearbeiten Bildschirm. Wenn die Tastatur wieder animiert werden soll, nachdem die modale Ansicht vollständig angezeigt wurde, fügen Sie sie in viewDidAppear ein. Andernfalls fügen Sie denselben Code in viewDidLoad oder viewWillAppear ein.

- (void) viewDidAppear: (BOOL) animated 
{ 
    UITextField *textField = // the field you want the keyboard to be up for 
    [textField becomeFirstResponder]; 
} 
+0

Das hat gut funktioniert, danke. – mmc

+0

Nur neugierig-- bist du mit viewDidAppear oder viewWillAppear gegangen? – Amagrammer