gpt4 book ai didi

xcode - 如何在 Xcode, swift 2 中将一个文本字段中的标记文本显示为其他文本字段中的标记文本

转载 作者:行者123 更新时间:2023-11-28 13:07:25 25 4
gpt4 key购买 nike

我的 OS X 程序中有两个包含两个文本的文本字段。我想有以下效果。当我在一个文本字段中标记部分文本时,我希望在其他文本字段中具有相同的文本标记部分。我如何在 xcode 中使用 swift 2 实现它?

最佳答案

您可以创建两个 TextView(注意:类 NSTextView 而不是 NSTextField)并使用 socket 将它们连接到 View Controller 。同样,连接最里面的 TextView,而不是剪辑 View 或带边框的 ScrollView 。在下面的示例中,“searchView”是包含您选择的文本的 View ,而“textView”是包含您要突出显示的文本的 View 。

然后,你可以这样做(注意我在 Swift 1.2 中测试过)

class ViewController: NSViewController {


@IBOutlet var textView: NSTextView!
@IBOutlet var searchView: NSTextView!

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
NSNotificationCenter.defaultCenter().addObserver(self, selector: "selectedSomeText:", name: NSTextViewDidChangeSelectionNotification, object: searchView)
}

@objc func selectedSomeText(notification: NSNotification) {
let selectedRange = searchView.selectedRange()
if selectedRange.length > 0 {
let nsString = searchView.string! as NSString
let selectedString = nsString.substringWithRange(selectedRange)
let regex = NSRegularExpression(pattern: selectedString, options: nil, error: nil)
let foundRanges = regex?.matchesInString(textView.string!, options: nil, range: NSRange(location: 0, length: count(textView.string!)))

let firstFound = foundRanges![0] as! NSTextCheckingResult
textView.showFindIndicatorForRange(firstFound.range)
}
}

}

这将突出显示第一个找到的匹配项。然后,您可以实现按钮或其他东西来迭代匹配(例如,通过在某处存储“foundRanges”并使用按钮迭代其索引等)。您可能还想实现一些错误检查和/或可选链接,因为在我的示例中所有这些 nils 和强制向下转型都可能导致崩溃。

关于xcode - 如何在 Xcode, swift 2 中将一个文本字段中的标记文本显示为其他文本字段中的标记文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320391/

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