0

我是一个新的iOS编程。现在我正在创建一个使用ReadMoreTextView库显示文本的示例应用程序。我的内容可能包含很多行,但通过使用这个库,我可以maximumNumberOfLines显示应该显示多少行内容。cell我在of 中实现了这些内容,UITableView我遇到的问题是,当我使用label.attributedReadMoreText = NSAttributedString(string: "...")时,会显示内容的结尾,...当我点击它时,会显示整个内容,所以我的问题是:如何不让用户点击那个...因为我希望用户点击cell然后我会显示另一个视图并在那里显示整个内容?

我怎样才能实现这样的目标?预先感谢。

我就是这样设置的UITextView

lazy var categoryShortDetailLabel: ReadMoreTextView = {

    let label = ReadMoreTextView()
    label.font = UIFont(name: "SFCompactText-Regular", size: 16)
    label.textColor = .black
    label.isEditable = false
    label.isSelectable = false
    label.maximumNumberOfLines = 3
    label.shouldTrim = true
    label.attributedReadMoreText = NSAttributedString(string: "...")

    label.translatesAutoresizingMaskIntoConstraints = false

    return label

}()
4

1 回答 1

1

查看此处的代码,我发现ReadMoreTextView旨在为您提供诸如ReadMoreReadLess之类的功能,用于 textView中较大的文本。

但是,您的要求是停止该功能。现在,如果你看一下这里的代码,你就会明白,函数shoreMoreText是一个私有函数,所以不能覆盖它。这个函数正在扩展文本并将 numberOfLines 设置为零。因此,您可以做的是,在其中注释代码并从函数返回以停止执行该操作。此外,由于 ReadMoreTextView 已获得 MIT 许可(在此处阅读许可),因此可以修改代码。

private func showMoreText() {
    return
    /*if let readLessText = readLessText, text.hasSuffix(readLessText) { return }
    
    shouldTrim = false
    textContainer.maximumNumberOfLines = 0

    if let originalAttributedText = _originalAttributedText?.mutableCopy() as? NSMutableAttributedString {
        attributedText = _originalAttributedText
        let range = NSRange(location: 0, length: text.count)
        if let attributedReadLessText = attributedReadLessText {
            originalAttributedText.append(attributedReadLessText)
        }
        textStorage.replaceCharacters(in: range, with: originalAttributedText)
    }
    
    invalidateIntrinsicContentSize()
    invokeOnSizeChangeIfNeeded()*/
}

尝试并分享您的结果。

希望能帮助到你!

于 2018-08-16T08:27:05.847 回答