繁体   English   中英

iOS - 当它在tableview单元格中时,将TextView滚动到顶部

[英]iOS - Scroll TextView to top when it's in a tableview cell

我在自定义TableView单元格中有一个UITextView 我希望文本视图默认滚动到顶部。 我通常在常规视图中这样做:

override func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews()
    let fixedWidth = bioView.frame.size.width
    bioView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    let newSize = bioView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    var newFrame = bioView.frame
    newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
    bioView.frame = newFrame;
    bioView.scrollRangeToVisible(NSRange(location:0, length:0))
}

bioView是我的文本视图对象。 但是,这在我的情况下不起作用,因为我无法在ViewController类中引用textview ,并且只能在CustomCell类中执行此操作,并且该类不能覆盖viewDidLayoutSubviews 有帮助吗?

尝试这个。

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomCell* cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
    [cell.textView scrollRangeToVisible:NSMakeRange(0, 0)];
    return cell;
}

Swift 3.0:

    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! DemoCell
    cell.textView.scrollRangeToVisible(NSRange(location:0, length:0))

有用! 但是,该表必须滚动才能使更改生效,这是迄今为止我找到的最佳方法。 感谢大家!

在处理UITableViewDelegate事件的willDisplayCell ,覆盖willDisplayCell方法。 从Cell中识别textView并编写代码以进行滚动。

我尝试使用scrollRangeToVisible()或在awakeFromNibwillDisplayCellcellForRowAtIndexPath willDisplayCell contentOffset设置为.zero进行willDisplayCell 这些都会被执行,但滚动仍然会在此之后的某个时间重置(通过AutoLayout?)。

对于出现UITableView时屏幕上的单元格,在willDisplayCell中执行滚动不会“粘住”。 如果单元格滚动并向后滚动屏幕,它确实有效。

对于已经在屏幕上具有“太多”文本的UITextView以便它滚出TextView底部的单元格,我发现使文本滚动到顶部的唯一方法是设置scrollRangeToVisible()或者UITableViewController的viewDidAppear()中的contentOffset 即使viewWillAppear()也无效。

一个缺点是,即使在performWithoutAnimation块中,TableView出现在屏幕上之后,此解决方案也会导致滚动位置跳转。

您可以将代码放在viewDidLayoutSubviews ,它会起作用,但如上所述,这会被多次调用,并且文本将在每次方向更改时滚动回到顶部,这可能是不可取的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM