我有一个拆分视图控制器:view & tableview。在这个表格视图中,我有带有文本字段的自定义单元格。我不知道我会有多少个细胞,所以它会自动生成。现在我正在尝试滚动到文本字段,当它成为FirstResponder 时。我试过这样的事情:
-(void) textFieldDidBeginEditing:(UITextField *)textField {
CGPoint focusOnTextField = CGPointMake(0, 300 + textField.frame.origin.y);
[scroller setContentOffset: focusOnTextField animated: YES];
}
300px - 我的 TableView 的起始位置。一切似乎都很好,但textField.frame.origin.y
总是等于 0(就像和bounds.origin.y
顺便说一句)。
我认为如果获取单元格的位置,哪个文本字段处于活动状态,然后替换textField.frame.origin.y
上cell.frame.origin.y
或类似的东西,我可以解决问题。
==================================================== ==================
我忘了说我的 tableviews 滚动被禁用了。我遵循您的建议和代码示例并像这样解决它:
- (UITableViewCell *)cellWithSubview:(UIView *)subview {
while (subview && ![subview isKindOfClass:[UITableViewCell self]])
subview = subview.superview;
return (UITableViewCell *)subview;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
UITableViewCell *activeCell = [self cellWithSubview:textField];
float offsetValueY = 200 + activeCell.origin.y;
CGPoint focusOnTextField = CGPointMake(0, offsetValueY);
[scroller setContentOffset:focusOnTextField animated:YES];
}
知道吗?它正在工作!:-) 但它产生了一个新问题。当我开始编辑文本字段时,滚动条首先跳到顶部,然后才转到正确的位置。当我写[scroller setContentOffset:focusOnTextField animated:NO];
的时候这个问题消失了,但是滚动条没有平滑的移动。这对我很不利 :-) 那么我们该如何解决呢?