gpt4 book ai didi

swift - UITableView 中灵活可编辑的 UITextView : won’t show the last line under the keyboard

转载 作者:行者123 更新时间:2023-11-30 11:50:04 26 4
gpt4 key购买 nike

我在 UITableViewCell 中有一个灵活的可编辑 UITextView。一个简单项目的完整源代码可以在 https://github.com/AlexChekanov/TextViewInTableView 找到。

一切正常。每次 TextView 高度发生变化时,我都会重新计算单元格高度,并将表格滚动到光标处。

class TextViewTableViewCell: UITableViewCell, UITextViewDelegate {

weak var tableView: UITableView?
var textViewHeight: CGFloat?

@IBOutlet weak var textView: UITextView!

override func awakeFromNib() {
super.awakeFromNib()

textViewHeight = textView.intrinsicContentSize.height
textView.becomeFirstResponder()
}


func textViewDidChangeSelection(_ textView: UITextView) {

guard let tableView = tableView else { return }

selfUpdate(in: tableView)
scrollToCursor()
}

func selfUpdate(in tableView: UITableView) {

// Do nothing if the height wasn't change
guard textViewHeight != textView.intrinsicContentSize.height else { return }

textViewHeight = textView.intrinsicContentSize.height
// Disabling animations gives us our desired behaviour
UIView.setAnimationsEnabled(false)
/* These will causes table cell heights to be recaluclated,
without reloading the entire cell */
tableView.beginUpdates()
tableView.endUpdates()

UIView.setAnimationsEnabled(true)
}

func scrollToCursor() {

guard let tableView = tableView else { return }

if let currentCursorPosition = textView.selectedTextRange?.end {
print(currentCursorPosition)

let caret = textView.caretRect(for: currentCursorPosition)

print(caret)

tableView.scrollRectToVisible(caret, animated: false)
}
}
}

唯一的问题是,当我在底部添加最后一行或几个空行时,表格 View 不会滚动。但是如果我向该空行添加任何符号,它就会滚动。

感谢您的帮助。

最佳答案

UITextView 默认允许滚动,这可能是问题所在。当 UITextView 中的文本大小大于 UITextView 本身时,它允许您滚动。这可能与 UITableView 的滚动发生冲突。为了安全起见,只需使用它:

self.textView.isScrollEnabled = false
self.textView.isEditable = false

关于swift - UITableView 中灵活可编辑的 UITextView : won’t show the last line under the keyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com