2009-08-03 6 views
1

OK, j'ai un écran dans mon application iPhone qui ressemble à ce qui suit: sample screen http://matthewcave.com/images/iPhone.jpgEssayer de commander intégré UIAnimations, ne pas avoir beaucoup de succès

Lorsque la cellule Notes Ajouter est touché, je voudrais que la clavier pour disparaître, ALORS je voudrais qu'il affiche de façon modale l'écran Edit Notes (qui a aussi un clavier, mais je voudrais qu'il revienne à l'écran).

À l'heure actuelle, il anime tout à la fois (le clavier ne disparaît jamais, il change juste son apparence, et la nouvelle vue s'anime modalement, apparemment sous le clavier). L'effet entier fonctionne correctement, mais c'est un peu herky-saccadé, et je pense que faire glisser le clavier avant d'ouvrir la vue modale à l'écran serait plus lisse. J'ai vu d'autres applications faire ce que je veux (des choses, par exemple) alors je sais que c'est possible.

Est-ce que quelqu'un peut me diriger dans la bonne direction en faisant en sorte que chacune des transitions se fasse individuellement, plutôt que toutes en même temps?

Modifier: Comme demandé, voici une partie du code que j'utilise. Malheureusement, il se lit presque exactement de la même manière en Objective C qu'en Anglais.

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

Pourriez-vous poster des extraits de code que vous avez en ce moment? –

Répondre

3

Je pense cela devrait fonctionner:

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

Ajoutez le code suivant dans le contrôleur pour votre écran Modifier les notes. Si vous voulez que le clavier s'anime une fois que la vue modale est complètement apparue, placez-la dans viewDidAppear. Sinon, placez le même code dans viewDidLoad ou viewWillAppear.

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

Cela a bien fonctionné, merci. – mmc

+0

Juste curieux-- avez-vous choisi viewDidAppear ou viewWillAppear? – Amagrammer