如何确保UITableViewCell可见?

时间:2010-12-14 15:55:01

标签: iphone ios4 xamarin.ios

我正在使用InputAccessoryView,因此我的键盘上会出现一个工具栏,用于iPhone应用程序。当键盘出现时,它会向上滚动UITableView,以便单元格成为第一响应者。当我点击键盘上的“下一步”,将焦点移动到下一个UITableView行时,单元格现在在InputAccessoryView下面。

如何确保活动单元格在视图中并且不被InputAccessoryView覆盖?

谢谢。

2 个答案:

答案 0 :(得分:4)

如果我理解正确,您希望以编程方式滚动表格,以便突出显示的单元格始终是可见的?如果是这样,您可以选择以下几种方法:

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

这将滚动到indexPath给出的单元格 - 如果你没有使用indexPath,你总是可以使用:

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

(Ydisplacement是您想要滚动的桌子下方的距离)

你也可以使用:

tableView.ScrollToNearestSelected(UITableViewScrollPosition.Top, true); 

但我不确定是否会选择您想要的单元格。这绝对值得尝试。 这只是让您入门的一些想法,但应该是您正在寻找的。希望这可以帮助!

答案 1 :(得分:0)

使用UITableViewController而不是UIViewController,而表视图将自动滚动。

将UITableView连接到UITableViewController的TableView属性(不要将其添加为UITableViewController的View属性的子视图!)。

还要确保将UITableView的AutoresizingMask属性设置为FlexibleHeight

示例:

public class YourTableViewController : UITableViewController
{
    private UITableView _yourTableView;

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