0

在我的应用程序中,我有一个导航栏、一个标签栏、一个搜索栏,而且我总是显示键盘。

但是,由于 iphone 5 的屏幕高度不同,我需要调整桌子的高度。

我无法将表格锚定到键盘顶部,因为这显示了运行时间。

所以我试图动态地做到这一点,看起来我错过了搜索栏,太短了,嗯。

也许有更简单更明显的方法?

编辑:到目前为止我的代码。

-(void)keyboardWillShow:(NSNotification*)aNotification {

int th = self.view.frame.size.height;

NSDictionary *info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] 
      CGRectValue].size;

int tableTop;
int tableHeight;

tableTop = table.frame.origin.y;

tableHeight = (th - tableTop) - kbSize.height;

[table setFrame:[General setTableBoundsByHeight:tableHeight:table]];

}

+ (CGRect)setTableBoundsByHeight:(int)lHeight:(UITableView*)tbl {

    CGRect tableFrame = tbl.frame;

    return CGRectMake(tableFrame.origin.x,
                                   tableFrame.origin.y,
                                   tableFrame.size.width,
                                    lHeight);
}
4

1 回答 1

2

我猜你的“tableView”是你的“self.view”的一部分。如果是,则它位于不同的坐标系中。

键盘被添加到窗口中,并且 tableView 在您的视图层次结构中。您将需要使用标题下描述的功能:视图坐标系之间转换

编辑:如果您阅读有关 UIKeyboardFrameEndUserInfoKey 的文档,您会看到它提到矩形在屏幕坐标中,而您的 UITableView 几乎可以肯定在某些其他视图坐标系中。在同一文档中,他们提到了在两者之间转换的功能。

于 2012-10-26T12:52:22.397 回答