Swiftui:如何更改文本字段键盘返回按钮的文本和颜色

时间:2020-09-08 00:16:16

标签: swift swiftui

在swiftui中使用Texfield时,是否可以自定义键盘上的返回按钮,当用户点击文本字段时激活该返回按钮。我想更改颜色并说“搜索”。这是我正在使用的文本字段代码

       TextField("Search", text: $searchText, onCommit: show)
                     .foregroundColor(.primary)

如何自定义键盘返回按钮?

2 个答案:

答案 0 :(得分:0)

1)将文本“搜索”设置为返回键:

textField.returnKeyType= .search

如Apple文档所述:“指定Return键的可见标题为“搜索””。

image

2)更改返回键的颜色

没有可用的公共API。
您可以使用私有API以 hacky方式来做到这一点,但不能保证将来会正常运行,甚至您的应用也会在应用商店审查中被拒绝。

答案 1 :(得分:0)

如果您未实现自己的自定义键盘(这很繁琐),则只能自定义返回键的标题和颜色。

对于标题,您可以通过以下方式自定义标题:

textField.returnKeyType= .search

对于颜色,有两个选项:蓝色(启用)和灰色(禁用)。您可以通过有限的方式自定义它:

textField.enablesReturnKeyAutomatically

此属性的默认值为false。如果将其设置为true,则当文本输入区域不包含任何文本时,键盘将禁用Return键。用户输入文字后,将自动启用Return键。


很遗憾,在SwiftUI中,这些东西目前没有任何修饰符。您可能需要用UITextFieldUIViewRepresentalbe包裹起来。实现是这样的:

struct SearchTextField: UIViewRepresentable {
    @Binding var searchText: String
    
    func makeUIView(context: Context) -> UITextField {
        let textField = UITextField()
        textField.placeholder = "Search"
        textField.returnKeyType = .google // or .search, .yahoo, etc.
        textField.enablesReturnKeyAutomatically = true
        textField.keyboardType = .webSearch
        // ... set other preferrences
        return textField
    }
    
    func updateUIView(_ textField: UITextField, context: Context) {
        //
    }
    
    // ...
}

有关更详细的实现,请查看此good SO answer