2012-04-19 80 views
1

我有一個帶有UITableView和UITextField的視圖控制器。我訂閱有關鍵盤何時打開和關閉的通知,並使用有關鍵盤高度的信息來調整UITableView和UITextField的大小和位置。當鍵盤顯示和隱藏時調整tableview的大小

但我有兩個問題。

當鍵盤打開時,UITextField似乎會自動重新定位 - 如果定位正確,這將會很好。它似乎有一個垂直偏移量與Tab Bar Controller的高度相同。

如何在鍵盤打開時禁用UITextField嘗試重新設置itsel?

的第二個問題是,當鍵盤打開的UITableView的表部分似乎太長 - 我可以滾動遠低於表中的最後一個元素(我猜類似鍵盤的高度)。當鍵盤打開我設置了的UITableView的新高度是這樣的(kbSize是鍵盤的大小):

CGSize size = self.view.frame.size; 
self.tableView.frame = CGRectMake(0,0f, 0,0f, size.width, size.height - kbSize.height); 

缺少什麼我在這裏?我是否需要設置表格的「高度」而不僅僅是框架?

感謝,奧

回答

3

如果你改變你的父類從UIViewControllerUITableViewController視圖的大小調整,而鍵盤顯示出來會再由操作系統來完成。

1

你只需要1視圖 - 控制類和看跌的tableview內部時,鍵盤會彈出笑話設置視圖 - 控制框架與Y = Y-140 ...... 這樣

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES]; 

    scrollView.frame = CGRectMake(0, -140, 320, 460); 
    [UIView commitAnimations]; 
    return YES; 
} 
-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES]; 
    scrollView.frame = CGRectMake(0, 0, 320, 460); 
    [UIView commitAnimations]; 
    [textField resignFirstResponder]; 
    return YES; 
} 
相關問題