2014-02-15 90 views
-1

我有一个UITableView,每个UITableViewCell有一个UITextField。当选择UITextField我动画UITableView到屏幕上,然后我改变UITableView大小,使用户可以看到UITableViewCellUITextField是英寸如何滚动UITableViewCell到特定位置

目前一切工作和UITableViewCell在最底层所示,当用户敲回车键时出现问题我尝试设置下一个UITableViewCellUITextField作为第一响应者,然后将其滚动到视图....但问题是这个下一个字段尚未加载,所以我无法访问此。

我想知道是否有一种方法可以initally滚动第一个选定的UITableViewCell/UITextField 2 or 3 up from the bottom so when enter is hit there is no worry about the next的UITextField not being loaded.... currently I have tried writing an off set but it dosnt work if I select a UITextField`是在屏幕的下半部分......这是代码的样子。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 

CGRect rc = [textField bounds]; 
rc = [textField convertRect:rc toView:self.finishingTableView]; 
CGPoint pt = rc.origin; 
pt.x = 0; 
if(rc.origin.y > 200) 
    pt.y -= 150; 
else 
    pt.y -= rc.origin.y; 
    [self.finishingTableView setContentOffset:pt animated:YES]; 

任何帮助,将不胜感激。

+0

你能用[[UITableView -scrollToRowAtIndexPath:atScrollPosition:animated:]'完成你想要的吗? –

回答

2

UITableView有一个方法:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 

可以玩弄scrollPosition达到期望的结果。

+0

关于这种方法,只有当键盘显示时才可以调用它,因为当键盘未显示时,我的当前代码没有问题。 – HurkNburkS

+0

我与scrollToRowAtIndexPath唯一的问题是,它将选定的UITableViewCell移动到中间或顶部的第一次,这很好......但如果用户选择的东西不是最后一个单元格,它给了我不想要的结果... – HurkNburkS

+0

我有也只是使用UITableViewScrollPositionMiddle进行测试,如果我在UITableView的下半部分中选择了一些东西,它会导致相同的问题,它不会滚动到中间位置,并且当您按下Enter键时,它将丢失UITextField Focus。 – HurkNburkS

相关问题