如何在“UITableViewCell”上滚动顶部UITextview

时间:2016-06-22 09:45:10

标签: ios uitableview scroll uitextview custom-cell

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
..
    //this cell is custom cell.
    [cell.textview setContentOffset:CGPointZero animated:YES]; //did not work
..
}

////////////////

- (void)tableView:(UITableView *)tableView willDisplayCell:(CustomCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    ..
    [cell.textview setContentOffset:CGPointZero animated:YES]; //did not work
    ..
    }

所有这些都没有效果。 textview滚动显示在底部。

我自己拿到了

解决方案。

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


    CGPoint bottomOffset = CGPointMake(0, cell.textview.frame.size.height - cell.textview.contentSize.height);
    if (cell.textview.contentSize.height >= cell.textview.bounds.size.height) {
        [cell.textview setContentOffset:bottomOffset animated:NO];
    }else{
        [cell.textview setContentOffset: CGPointMake(0,0) animated:NO];
    }
}

滚动的位置由iOS内部设置(0,0)...也许。 所以设置减去 y值。

谢谢你的回答。 祝大家过得愉快!

3 个答案:

答案 0 :(得分:0)

尝试不使用动画

[cell.textview setContentOffset:CGPointZero]

或添加动画块

[UIView animateWithDuration:0.5 animations:^{
    [cell.textview setContentOffset:CGPointZero]
}];

希望这个帮助

答案 1 :(得分:0)

尝试使用以下代码:

[cell.textview scrollRangeToVisible:NSMakeRange(0, 0)];

OR

[cell.textview setContentOffset:CGPointZero animated:NO];

答案 2 :(得分:0)

这是一个运作良好的黑客。在cellForRow中,您禁用textView滚动。然后在viewDidAppear中找到包含textView的特定索引路径,并再次启用滚动。如果需要,可以从textView中删除填充:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:4 inSection:0];
FileInfoNotesTableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
cell.notesTextView.scrollEnabled = YES;

//I cut the padding from the textview
cell.notesTextView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);