视觉键盘套件

Screenshot

特性

用法

在您的 Scene 中声明 KeyboardWindowGroup

import SwiftUI
import VisionKeyboardKit

@main
struct YourApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        KeyboardWindowGroup()
    }
}

使用 OpenWindowAction/DismissWindowAction 打开/关闭键盘窗口,并通过 KeyboardEvent.publisher(for:) 接收事件

import SwiftUI
import VisionKeyboardKit

struct ContentView: View {
    @Environment(\.openWindow) private var openWindow
    @Environment(\.dismissWindow) private var dismissWindow
    @State private var isKeyboardShown: Bool = false

    var body: some View {
        Button {
            if !isKeyboardShown {
                openWindow(keyboardFor: .global)
            } else {
                dismissWindow(keyboardFor: .global)
            }
        } label: {
            Text("Toggle Keyboard")
        }.onReceive(KeyboardEvent.publisher(for: .global)) { event in
            if case .keyboardDidAppear = event {
                isKeyboardShown = true
            } else if case .keyboardDidDisappear = event {
                isKeyboardShown = false
            } else {
                print("Got event: \(event)")
            }
        }
    }
}

如果您需要多个具有独立事件发布者的键盘,只需传入任何 Hashable,它将作为键盘的标识符。

返回的 Publisher 可用于 Combine 框架中的链式处理(例如,防抖动)。