我在它下面有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相關的問題,但是誰知道? –