Swift 如何使文本视图支持OSX中的字典服务
我想在我的应用程序中使用苹果的字典服务。测试代码如下所示。它可以得到这个词的解释,问题是: 1.如何获得func dcsgetterRangeinstring中的偏移量,我在代码中设置为7 2.如何让文本视图响应键盘事件cmd+ctrl+dSwift 如何使文本视图支持OSX中的字典服务,swift,swiftui,Swift,Swiftui,我想在我的应用程序中使用苹果的字典服务。测试代码如下所示。它可以得到这个词的解释,问题是: 1.如何获得func dcsgetterRangeinstring中的偏移量,我在代码中设置为7 2.如何让文本视图响应键盘事件cmd+ctrl+d // // ContentView.swift // testTextClick // // Created by lezi on 2020/6/2. // Copyright © 2020 lezi. All rights reserved. //
//
// ContentView.swift
// testTextClick
//
// Created by lezi on 2020/6/2.
// Copyright © 2020 lezi. All rights reserved.
//
import SwiftUI
import Foundation
import AppKit
import CoreServices.DictionaryServices
struct ContentView: View {
let txt = "hello world"
var body: some View {
VStack{
Text(txt)
.contextMenu(){
Button("search xxx"){
let range = DCSGetTermRangeInString(nil, self.txt as CFString, 7)
let str = DCSCopyTextDefinition(nil,self.txt as CFString ,range)
print(str)
}
}
}
.frame(maxWidth:.infinity,maxHeight: .infinity)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
NSTextView公开了更多的函数来完成这项工作
override func mouseDown(with event: NSEvent) {
let location = event.locationInWindow
let point3 = self.window?.convertPoint(toScreen: location)
let idx = self.characterIndex(for: point3!)
let range = DCSGetTermRangeInString(nil, self.string as CFString, idx)
super.mouseDown(with: event)
}
NSTextView公开了更多的函数来完成这项工作
override func mouseDown(with event: NSEvent) {
let location = event.locationInWindow
let point3 = self.window?.convertPoint(toScreen: location)
let idx = self.characterIndex(for: point3!)
let range = DCSGetTermRangeInString(nil, self.string as CFString, idx)
super.mouseDown(with: event)
}