对回调初始值设定项(KeyboardToolbar)执行操作



这里的新手,我正在学习如何使用API"KeyboardToolbar";这允许在SwiftUI中轻松地在键盘上方添加工具栏。我希望工具栏上的项目在按下时执行操作,但我不知道如何执行。我的简单测试代码是:

import SwiftUI
import KeyboardToolbar
struct KeyToolbar: View {

@State var text = ""

func addText() {
self.text = "Hello!"
}

let toolbarItems: [KeyboardToolbarItem] = [
.init(systemName: "plus.circle", callback: {addText()}),
.init(systemName: "italic", callback: {}),
.init(systemName: "underline", callback: {}),
.dismissKeyboard
]

var body: some View {
TextField("Text:", text: $text)
.keyboardToolbar(toolbarItems)
}
}

我得到一个错误:不能在属性初始值设定项中使用实例成员"addText";属性初始化程序在"self"可用之前运行

我试着寻找如何解决这个问题,但我不知道。如何使用键盘工具栏执行操作?

您可以使toolbarItems成为计算属性,而不是let声明——这样,它就可以访问addText:

var toolbarItems: [KeyboardToolbarItem] {
return [
.init(systemName: "plus.circle", callback: {addText()}),
.init(systemName: "italic", callback: {}),
.init(systemName: "underline", callback: {}),
.dismissKeyboard
]
}

最新更新