我有表格 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/