Search code examples
swiftmacoslabelnstextviewparagraph

Handle paragraphs in swift


Is there a recommended way of handling paragraphs in swift? I am very new to swift so I'm not sure what the recommended solution or any solution for that matter is.

I want to be able to open a .txt file and be able to select a paragraph, selecting the paragraph needs to print the selected paragraph to a label.

I haven't got any code for this yet, other than opening and viewing the text file by doing the following:

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

Once the .txt file is displayed I want to be able to click on a paragraph and have the paragraph display in a separate label

I am not fixed on using .txt files if there is a better format for achieving this

I'm guessing that printing to the label should be as easy as

 let selectedParagraph = //however we identify the paragraph stringvalue

 let thelabel = selectedParagraph.stringValue

But I need to know how to identify and get the text from the paragraph


Solution

  • Create a subsclass of NSTextView and use it to display the whole text. This will always select text by paragraph:

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

    Then set a delegate (NSTextViewDelegate) and track selection changes of the text view to update your secondary label with the current selection.