我在它下面有tableview和几个控件(文本框,按钮和标签)。tableview不会在父视图调整后调整大小
当键盘显示时,我可以减少父视图高度或将其向上滑动,以便可以访问我的控件。
这部分工作正常。
但是我也想调整tableview,所以我试着降低它的高度(如果我减小父视图的高度)或向下移动origin.y坐标(如果我滑动父视图)。
既没有工作,即tableView不会改变到新的框架,它保持不变。如果我不操纵父视图,即如果我单独调整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,并将键盘调整大小myTableWinShow到键盘启动后照顾桌面视图。
-(void)keyboardDidShow:(NSNotification *)notif{
[self resizeTbl:160];}
因此,所有的观点上来,因为他们都应该现在。
但是,当焦点从一个文本框移动到另一个文本框时,键盘已经启动,tableView自行调整到原始框架,我无法捕捉到它的时间和方式。然后,当键盘出现故障的tableView扩大超出其原有的框架,因为我必须
-(void)keyboardDidHide:(NSNotification *)notif{
[self resizeTbl:-160];}
然而,当焦点再次发生变化的tableView收缩恢复到正常框架,一切看起来就好了。如果我能以某种方式防止那些不必要的tableview调整大小,搞砸了。
如果有人能理解这一切,我会非常感激。
更新:
我明白了。 Autolayout搞砸了我。我把它关掉like that和我的逻辑现在工作,没有毛刺。
确保为表视图设置了“autoresizingMask”。 – rmaddy
sry,不认为这是问题导致它调整如果单独完成,并且我尝试了你的建议 - 没有效果 –
它看起来像一个iOS相关的问题,但是谁知道? –