2010-12-14 42 views
1

J'utilise un InputAccessoryView pour qu'une barre d'outils apparaisse en haut de mon clavier pour une application iPhone. Lorsque le clavier apparaît, il fait défiler l'UITableView jusqu'à ce que la cellule devenant le premier répondeur soit visible. Lorsque je tape "Next" sur mon clavier qui déplace le focus vers la prochaine ligne UITableView, la cellule se trouve sous InputAccessoryView maintenant.Comment s'assurer que UITableViewCell est visible?

Comment puis-je m'assurer que la cellule active est visible et non masquée par InputAccessoryView?

Merci.

Répondre

4

Si je comprends bien, vous voudriez faire défiler la table par programme afin que votre cellule en surbrillance soit toujours visible? Si oui, vous avez quelques choix pour ce faire:

tableView.ScrollToRow(indexPath, UITableViewScrollPosition.Top, true); 

Ce défilera vers la cellule donnée par le indexPath - si vous ne disposez pas du indexPath à portée de main, vous pouvez toujours utiliser:

tableView.ScrollRectToVisible(new RectangleF(0, Ydisplacement, tableView.Width, tableView.Height), true); 

(où Ydisplacement est la distance en bas de la table que vous souhaitez faire défiler)

vous pouvez également utiliser:

tableView.ScrollToNearestSelected(UITableViewScrollPosition.Top, true); 

mais je ne suis pas sûr si la cellule que vous voulez sera sélectionnée. Cela vaut vraiment la peine d'expérimenter. Ceci est juste quelques idées pour commencer, mais devrait être ce que vous cherchez. J'espère que cela t'aides!

0

Utilisez UITableViewController à la place de UIViewController, pour que la vue de table défile automatiquement.

Connectez votre UITableView à la propriété TableView de UITableViewController (ne l'ajoutez pas en tant que sous-vue de la propriété View du UITableViewController!).

Assurez-vous également de définir la propriété AutoresizingMask de votre UITableView à FlexibleHeight

Exemple:

public class YourTableViewController : UITableViewController 
{ 
    private UITableView _yourTableView; 

    public override void ViewDidLoad() 
    { 
     _yourTableView = new UITableView(View.Bounds, UITableViewStyle.Plain); 
     _yourTableView.AutoresizingMask = UIViewAutoresizing.FlexibleHeight; 
     TableView = _yourTableView; 
    } 
}