如何添加键盘工具栏按钮,一键显示格式表。 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()
}
效果就像这张图片一样。您必须点击格式,然后点击更多...,然后格式表就会出现。
使用可以使用.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")
}
}
}
}
}
参考:https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-a-toolbar-to-the-keyboard