【问题标题】:Handle paragraphs in swift快速处理段落
【发布时间】:2019-04-08 14:05:20
【问题描述】:

有没有推荐的快速处理段落的方法?我对 swift 很陌生,所以我不确定推荐的解决方案或任何解决方案是什么。

我希望能够打开一个.txt文件并且能够选择一个段落,选择段落需要将选择的段落打印到一个标签上。

除了通过执行以下操作打开和查看文本文件之外,我还没有任何代码:

    let file = "/Users/wade/Desktop/ht.txt"
    let path=URL(fileURLWithPath: file)
    let text=try! String(contentsOf: path)
    textView.stringValue = text

.txt 文件显示后,我希望能够单击一个段落并将该段落显示在单独的标签中

如果有更好的格式来实现这一点,我不固定使用 .txt 文件

我猜想打印到标签应该很简单

 let selectedParagraph = //however we identify the paragraph stringvalue

 let thelabel = selectedParagraph.stringValue

但我需要知道如何识别和获取段落中的文本

【问题讨论】:

    标签: swift macos label nstextview paragraph


    【解决方案1】:

    创建NSTextView 的子类并使用它来显示整个文本。这将始终按段落选择文本:

    class ParagraphTextView: NSTextView {
    
        override func selectionRange(forProposedRange proposedCharRange: NSRange,
                                     granularity: NSSelectionGranularity) -> NSRange {
    
            return super.selectionRange(forProposedRange: proposedCharRange,
                                        granularity: .selectByParagraph)
        }
    
    }
    

    然后设置一个委托 (NSTextViewDelegate) 并跟踪文本视图的选择更改,以使用当前选择更新您的辅助标签。

    【讨论】:

    • 这是正确的吗? '类ParagraphTextView:NSTextView {覆盖func selectionRange(forProposedRange提出的CharRange:NSRange,粒度:NSSelectionGranularity)-> NSRange {返回super.selectionRange(forProposedRange:proposedCharRange,粒度:.selectByParagraph)让文件=“/Users/wade/Desktop/ht. txt" 让路径=URL(fileURLWithPath: 文件) 让文本=尝试! String(contentsOf: path) textView.stringValue = text }'
    • 不确定为什么不格式化为代码.. textView.StringValue = text 返回以下错误类声明无法关闭外部范围中定义的值“自我”
    • @wades 在代码的其他地方设置 textview 的内容。例如。在applicationDidFinishLaunching.
    • 好的,我已经设置并运行了,但它没有在点击时选择段落
    • @wades 文本视图应设置为可选,但在 Interface Builder 中不可编辑。还要在selectionRange 中设置一个断点,看看它是否真的被调用了。
    猜你喜欢
    • 2012-09-02
    • 1970-01-01
    • 2014-12-07
    • 2016-03-30
    • 2014-02-19
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多