我在它下面有表格视图和几个控件(文本字段、按钮和标签)。
当键盘出现时,我可以降低父视图高度或向上滑动,以便可以访问我的控件。
那部分工作正常。
但是我也想调整 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];}
我可能可以将所有控件一个一个向上移动,然后表格调整大小就可以了,但我认为应该有一种更简单的方法。任何建议将不胜感激。
更新/解决方法:由于 table resize 单独工作就很好,我又添加了一个观察者 - keyboardDidShow,并将 resize myTable 从 keyboardWilShow 移到那里,以便在键盘启动后处理 tableview。
-(void)keyboardDidShow:(NSNotification *)notif{
[self resizeTbl:160];}
所以所有的观点都像现在应该出现的那样出现。
但是,当焦点从一个文本框移动到另一个文本框并且键盘已经打开时,tableView 会自行调整到其原始框架,我无法捕捉到它何时以及如何做到这一点。然后,当键盘按下时,tableView 扩展超出了它的原始框架,因为我必须有
-(void)keyboardDidHide:(NSNotification *)notif{
[self resizeTbl:-160];}
然而,当焦点再次改变时,tableView 会收缩回正常的框架,一切看起来都很好。如果我能以某种方式防止那些不需要的 tableview 调整大小,那就搞砸了。
如果有人能理解所有这些,我将不胜感激。
更新:
我知道了。自动布局把我弄乱了。我像那样把它关掉了,我的逻辑现在可以工作了,没有故障。