Lion
Lion

Reputation: 1

How can I add a keyboard toolbar button to show the Format sheet in SwiftUI?

How can I add a keyboard toolbar button, which shows the Format sheet by one click. Apple Notes has this functionality in their app like this.

I have tried this.

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
        
        return textView
    }()

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

#Preview {
    ViewController()
}

But I have to tap format and then tap more... and then the Format sheet will present.

Upvotes: 0

Views: 48

Answers (1)

Daljeet
Daljeet

Reputation: 1595

Use can customise using .toolbar as per your requirement. Like this:

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

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

Upvotes: 0

Related Questions