ios - 父 View 调整大小后,tableview 不调整大小

标签 ios objective-c uitableview

我有表格 View 和它下面的几个控件(文本字段、按钮和标签)。

当键盘显示时,我可以降低父 View 高度或向上滑动,以便可以访问我的控件。

这部分工作正常。

但是我也想调整tableview,所以我尝试减小它的高度(如果我减小父 View 的高度)或向下移动origin.y坐标(如果我向上滑动父 View )。

两者都不起作用,即 tableView 不会更改为新框架,它保持不变。仅当我不操作父 View (即,如果我单独调整 tableView 框架)时,Tableview 才会调整大小。

以下是实现此目的的方法:

-(void)resizeTbl:(int)pnts{
CGRect tblframe = self.myTable.frame;
//tblframe.origin.y+=pnts;
tblframe.size.height-=pnts;
self.myTable.frame =tblframe;}


-(void )keyboardWillShow:(NSNotification *)notif{
int pnts=160;
CGRect frame = self.view.frame;
//frame.origin.y-=pnts;
frame.size.height-=pnts;
self.view.frame = frame;
[self resizeTbl:pnts];}

我可能可以将所有控件一一向上移动,然后调整表格大小就可以了,但我认为应该有一种更简单的方法。任何建议将不胜感激。

更新/解决方法: 由于表格调整大小单独工作就很好,所以我又添加了一个观察者 - KeyboardDidShow,并将调整大小 myTable 从 KeyboardWilShow 移到那里,以便在键盘启动后处理表格 View 。

-(void)keyboardDidShow:(NSNotification *)notif{
[self resizeTbl:160];}

所以所有的 View 都按照现在应该的方式出现。

但是,当键盘已经打开时焦点从一个文本框移动到另一个文本框时,tableView 会自行调整到其原始框架,我无法捕捉到它何时以及如何执行。然后,当键盘按下时,tableView 会扩展到其原始框架之外,因为我必须有

-(void)keyboardDidHide:(NSNotification *)notif{
[self resizeTbl:-160];}

但是,当焦点再次改变时,tableView 会缩小回正常框架,一切看起来都很好。如果我能以某种方式阻止那些不必要的表格 View 调整大小,从而搞乱事情。

如果有人能够理解这一切,我将非常感激。

更新:

我明白了。自动布局让我很困惑。我把它关掉了like that现在我的逻辑可以正常工作,没有任何故障。

最佳答案

View 的 autoResizingMask 设置为多少?

在初始化 TableView 时尝试此操作。

self.myTable.autoresizingMask = UIViewAutoresizingFlexibleHeight;

这将导致 TableView 随其父 View 一起调整大小。

关于ios - 父 View 调整大小后,tableview 不调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615296/

相关文章:

objective-c - 我应该将托管对象上下文作为方法的参数包含在内吗?

ios - 当我调用 reloadData() 时,UITableview 将新单元格附加到旧单元格下方

iOS - 如何从 UITableViewCell 呈现不同的场景

iphone - 是否可以从 Nib 的代码中访问 UITableView 的 ScrollView?

iphone - 如何从导航 Controller 中的 View 更改为选项卡栏中的 View

ios - stub [[SomeClazz alloc] init] 不工作但接受的答案说它应该工作

iphone - Youtube 嵌入 html for uiwebview 不工作(在 iOS 4.2 iPhone 3G 上)

android - 使Android代码跨平台

ios - 两个堆栈 View 中多行 View 的自动布局问题

ios - 无法找到或获取请求证书的上下文