Как я могу получить строку выбранного текста из NSTextView
как NSString
?
Ваша помощь очень ценится.
Как я могу получить строку выбранного текста из NSTextView
как NSString
?
Ваша помощь очень ценится.
Поскольку NSTextView является подклассом NSText, вы можете использовать NSText для определения выбранной строки следующим образом:
NSString *selected = [[myTextView string]
substringWithRange:[myTextView selectedRange]];
NSText может иметь более одного выбора. Проверьте это с помощью TextEditapp: выберите строку с помощью мыши, удерживая нажатой клавишу CMD. Таким образом, вы можете выбрать столько строк, сколько хотите. Поэтому я думаю, что более распространенным решением является использование:
NSArray *ranges = [myTextView selectedRanges];
а затем извлеките строки одну за другой.
Swift 5, обработка множественного выбора NSTextView на основе ответа @vauxhall
extension NSTextView {
var selectedText: String {
var text = ""
for case let range as NSRange in self.selectedRanges {
text.append(string[range]+"\n")
}
text = String(text.dropLast())
return text
}
}
extension String {
subscript (_ range: NSRange) -> Self {
.init(self[index(startIndex, offsetBy: range.lowerBound) ..< index(startIndex, offsetBy: range.upperBound)])
}
}
Быстрый
extension NSTextView {
var selectedText: String {
string[selectedRange()]
}
}
extension String {
subscript (_ range: NSRange) -> Self {
.init(self[index(startIndex, offsetBy: range.lowerBound) ..< index(startIndex, offsetBy: range.upperBound)])
}
}
использование
let textView = NSTextView()
print(textView.selectedText)