我开始编辑时尝试滚动到表格单元格内的文本字段。 它适用于其他表格单元格,第一个除外:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
UITableViewCell *cell = (UITableViewCell *)textField.superview.superview;
[self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
我测试了[self.tableView indexPathForCell:cell]的值,它是为第一行和第一部分设置的。
我认为这与第一部分的heightForHeaderInSection非常大(覆盖大约一半的屏幕)这一事实有关。
答案 0 :(得分:0)
我遇到了这个问题,刚从这个博客link
解决了这个问题以下是流程: 在UITextFieldDelegate的textFieldDidBeginEditing方法中,唯一需要注意的是在实际显示键盘之前调用委托。为了解决这个问题,我们使用延迟性能来延迟滚动:
-(void) scrollToCell:(NSIndexPath*) path {
[_tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionNone animated:YES];
}
-(void) textFieldDidBeginEditing:(UITextField *)textField {
NSIndexPath* path = [NSIndexPath indexPathForRow:row inSection:section];
[self performSelector:@selector(scrollToCell:) withObject:path afterDelay:0.5f];
}
答案 1 :(得分:0)
我猜这是一个错误。通过设置表contentOffset:
,我能够解决这个问题- (void)textFieldDidBeginEditing:(UITextField *)textField
{
CGPoint contentOffset = ...; // calculate offset for cell
[UIView animateWithDuration:0.5 animations:^{
self.tableView.contentOffset = contentOffset;
}];
}