用户输入时自动将字符添加到 searchBar textField?

Adding characters automatically to searchBar textField while user is typing?

我想知道是否有一种方法可以在用户键入时自动将字符添加到 searchBar textField。例如,如果用户键入 533,那么我想自动向其添加“X”。我尝试执行以下操作:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchText.isEmpty == false {
        if searchText.count > 2 {
            searchText.insert(" X ", at: 3)
        }
    }

但是,Xcode 在 searchText.insert(" X ", at: 3) 旁边显示一条错误消息,指出:

Cannot use mutating member on immutable value: 'searchText' is a let constant

您无法修改 searchText 的值。方法参数是常量。使用新值创建局部变量。然后更新搜索栏的文本。

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchText.count > 2 {
        var newText = searchText
        newText.insert(" X ", at: 3)
        searchBar.text = newText
    }
}

但这仍然有您需要解决的问题。这不考虑用户移动插入符或当用户在搜索字段中输入更多文本时您将添加太多次 X 的事实。