我想知道是否有办法检测用户何时按 delete 按钮或尝试删除UISearchBar
中的字符?我在谷歌搜索了很多,我尝试了几个解决方案,其中一个将whiteSpaceCharacter
放在空UITextField
中,另一个使用shouldChangeTextInRange
代表。
那个空的空间,用户可以通过按住并突出显示空间以某种方式知道那里有空间,所以我觉得这不是一个很好的解决方案。
当搜索栏为空时,使用shouldChangeTextInRange
的那个不起作用。
另外需要注意的是,我发现的大多数解决方案都是在Objective C中,如果有一些方法可以在Swift中实现,那将会很棒。或者如果有人能指出我走向正确的道路,那就太好了。
答案 0 :(得分:1)
不知道为什么当searchBar为空时你不会做删除,但你可以这样做:
import UIKit
class ViewController: UIViewController, UISearchBarDelegate{
private var search : UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
search = UISearchBar()
search.frame = CGRectMake(0, 0, 200, 200)
search.delegate = self
self.view.addSubview(search)
}
func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
let char = text.cStringUsingEncoding(NSUTF8StringEncoding)!
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92) {
print("Backspace was pressed")
}
return true
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if searchText == "" {
search.text = " "
}
}
}
这将使用UISearchBarDelegate,并通过shouldChangeTextInRange函数查明是否按下了退格键。如果字符串为空,则重新应用空格以使其连续可删除。它有点俗气,但这是我所知道的唯一方法,因为它会在字段为空时进行注册。
希望它有用。