2010-06-12 52 views
0

我在iPhone應用程序中有表格視圖控制器。表格視圖有兩個部分。第一節有兩排,第二節有一排。第二部分有一個自定義表格視圖單元格。當文本字段開始編輯時,表格視圖滾動iphone

第二部分有一個文本框,當文本框開始編輯並彈出鍵盤時隱藏。我想讓這個表格視圖在彈出鍵盤時滾動。

我試了下我在不同網站上遇到的代碼,但徒勞無功。

在此先感謝。

-(void) textFieldDidBeginEditing:(UITextField *)textField { 

    CGRect textFieldRect = [textField frame]; 
    [self.tableView scrollRectToVisible:textFieldRect animated:YES]; 
} 
          atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
} 

-(void) textFieldDidBeginEditing:(UITextField *)textField { 

    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview]; 
    [self.tableView scrollToRowAtIndexPath:[tableView indexPathForCell:cell] 
          atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
} 

回答

3

您想要使用表視圖的setContentOffset方法。確定垂直滾動的大小(以像素爲單位),然後:

CGFloat verticalScroll = ... your code here ... 
[self.tableView setContentOffset:CGPointMake(0, verticalScroll) animated:YES]; 
9

我在Static Cell TVC上遇到了這個問題。當覆蓋viewWillAppear而不是調用它的Super時有一個問題。所以,如果你這樣做,請確保調用

[super viewWillAppear:animated]; 

viewWillAppear

+0

良好的呼叫,我添加viewWillAppear後忽略了這一點:一個靜態TVC,而不是另一個。 – NSTJ 2013-01-28 14:37:17

+0

救了我一個痛苦的世界。謝謝 :) – 2016-04-09 15:12:07

0

我的問題是我在

- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 

功能將包含的UITextField表格單元格的頂部。如果你這樣做,自動UITableView滾動不起作用。

所以,你必須做一些算術來確定你的最後一行顯示的時間,並把你的特殊UITableViewCell和其他所有的一起放在這裏。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
相關問題