开发者

Table View scroll when text field begin editing iphone

I have table view controll开发者_如何学Cer in iphone application. Table view has two sections. First section has two rows and second section has one row. Second section has a custom table view cell.

Second section has a textfield which hides when text field begin editing and keyboard pops up. I want this table view to scroll when keyboard pops up.

I tried the following code which I came across on different websites but in vain.

Thanks in advance.

-(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];
}


I have run into this on Static Cell TVC's. There is an issue when overriding viewWillAppear and NOT calling its Super. So if you are doing that, make sure to call

[super viewWillAppear:animated];

at the top of viewWillAppear


You want to use the setContentOffset method of the table view. Determine the magnitude of the vertical scroll (in pixels), and then:

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


My problem was I was adding the table cell containing the UITextField in the

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

function. If you do this the automatic UITableView scrolling doesn't work.

So, you have to do some arithmetic to work out when your last row is showing and put your special UITableViewCell in here along with all the others.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜