簡體   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