You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KeyboardKit库的SystemKeyboard中替换AutocompleteToolbar为自定义按钮

替换KeyboardKit SystemKeyboard的AutocompleteToolbar为自定义按钮

核心思路

SystemKeyboard是基于SwiftUI实现的视图,原AutocompleteToolbar位于键盘顶部。隐藏默认工具栏后,只需用SwiftUI的布局容器(如VStack)将自定义视图与键盘主体组合,就能精准替代原工具栏位置,无需复杂的视图"注入"操作。

步骤1:创建自定义工具栏视图

先实现包含自定义按钮的工具栏视图,高度匹配原AutocompleteToolbar(默认44pt),保证布局协调:

import SwiftUI
import KeyboardKit

struct CustomKeyboardToolbar: View {
    let onButtonTap: () -> Void
    
    var body: some View {
        HStack {
            Spacer()
            Button(action: onButtonTap) {
                Text("自定义操作")
                    .foregroundColor(.white)
                    .padding(.vertical, 8)
                    .padding(.horizontal, 20)
                    .background(Color.blue)
                    .cornerRadius(12)
            }
            Spacer()
        }
        .padding(.horizontal, 16)
        .frame(height: 44)
        .background(Color(UIColor.systemGray6))
    }
}

步骤2:组合自定义视图与SystemKeyboard

在KeyboardViewController的viewWillSetupKeyboard方法中,用VStack将自定义工具栏和去掉默认工具栏的SystemKeyboard组合:

import KeyboardKit

class KeyboardViewController: KeyboardInputViewController {

    override func viewWillSetupKeyboard() {
        super.viewWillSetupKeyboard()
        setup { controller in
            VStack(spacing: 0) {
                // 自定义工具栏放在顶部,替代原AutocompleteToolbar
                CustomKeyboardToolbar(onButtonTap: {
                    // 这里写按钮点击逻辑,示例:插入指定文本
                    self.textDocumentProxy.insertText("[自定义内容]")
                    // 也可以切换键盘类型,比如:
                    // self.context.keyboardType = .emailAddress
                })
                
                // 加载不带默认工具栏的SystemKeyboard
                SystemKeyboard(
                    controller: controller,
                    autocompleteToolbar: .none
                )
            }
        }
    }
}

关键细节说明

  • VStack(spacing: 0):保证自定义工具栏和键盘主体无缝衔接,和原键盘布局一致
  • textDocumentProxy:KeyboardKit提供的与系统输入框交互的核心对象,可用于插入文本、删除内容、切换键盘等操作
  • 自定义工具栏可自由扩展:如需多个按钮、图标或其他UI元素,直接修改CustomKeyboardToolbar的布局即可

内容的提问来源于stack exchange,提问作者user21430614

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:12:16