我想知道是否有一种方法可以在用户键入时自动将字符添加到搜索栏文本字段中。例如,如果用户键入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”,位置:3)旁边显示一条错误消息,说明:
不能对不可变值使用变异成员:“searchText”是let常量

最佳答案

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

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

但这仍然有一些问题需要解决。这并没有考虑到用户移动插入符号的情况,也没有考虑到用户在搜索字段中输入更多文本时,您将添加X的次数过多。

关于swift - 用户输入时会自动将字符添加到searchBar textField吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57632451/

10-10 00:45