如何添加键盘工具栏按钮以在 SwiftUI 中显示格式表?

问题描述 投票:0回答:1

如何添加键盘工具栏按钮,一键显示格式表。 Apple Notes 在他们的应用程序中具有此功能,如下所示。

我已经尝试过了。

import SwiftUI
import UIKit
struct SimpleTextView: UIViewControllerRepresentable {
    @Binding var text: String
    func makeUIViewController(context: Context) -> ViewController {
        let viewController = ViewController()
        viewController.text = text
        return viewController
    }

    func updateUIViewController(_ uiViewController: ViewController, context: Context) {
        uiViewController.updateTextView(text: text)
    }
}

import UIKit
import SwiftUI
import SwiftData

class ViewController: UIViewController {
    var text: String = "Implementing a Rich Text Editor has become a nightmare for iOS developers so far. Finally Apple announced an exciting update to UITextView for rich text editing."
    var formatSheetVisible: Bool = false

    lazy var textView: UITextView = {
        let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 300, height: 500))
        textView.center = view.center
        textView.font = .systemFont(ofSize: 21)
        textView.borderStyle = .none
        // 开启富文本编辑
        textView.allowsEditingTextAttributes = true
        
        textView.keyboardDismissMode = .interactive

        let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: textView.frame.size.width, height: 44))
            let formatButtom = UIBarButtonItem(
                title: "Format text",
                image: UIImage(systemName: "textformat"),
                primaryAction: UIAction(title: "Format", handler: { UIAction in
                    self.formatSheetVisible = true
                })
            )
        toolBar.setItems([formatButtom], animated: true)

        textView.inputAccessoryView = toolBar
        
        return textView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(textView)
        textView.text = text
    }
    
    func updateTextView(text: String) {
        textView.text = text
    }
}

#Preview {
    ViewController()
}

效果就像这张图片一样。您必须点击格式,然后点击更多...,然后格式表就会出现。

swiftui formatting keyboard uitextview toolbar
1个回答
0
投票

使用可以使用.toolbar进行定制。 像这样:

struct ContentView: View {
    @State private var name = "Taylor"

    var body: some View {
        TextField("Enter your name", text: $name)
            .textFieldStyle(.roundedBorder)
            .toolbar {
                ToolbarItemGroup(placement: .keyboard) {
                    Button("Click me!") {
                        print("Clicked")
                    }
                }
            }
    }
}

enter image description here

参考:https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-a-toolbar-to-the-keyboard

© www.soinside.com 2019 - 2024. All rights reserved.