在使用Swift中的UITableView和UISearchBar时,我想找到一种方法,在用户搜索后滚动表格视图时保持搜索栏上的取消按钮可用,这样他们就不必点击两次以取消搜索。退出第一响应者(或结束对搜索栏的编辑)的默认行为会使取消按钮变灰,但我想将其保持启用状态。因此,在Stackoverflow上我找到了如何做到这一点的方法,但我无法找到关于下面代码中searchBar.value(forKey: "cancelButton")
的解释。显然,它在某种程度上是在创建对搜索栏上的取消按钮的引用,但我不明白.value表示什么(因为我是一个新手),而"cancelButton"键来自何处。我已经阅读了func value(forKey key:String)
的文档,但仍然不理解它。如果有人能解释一下这段代码是做什么的就太好了。
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
searchBar.resignFirstResponder()
// If the user scrolls, keep the cancel button enabled
if let cancelButton = searchBar.value(forKey: "cancelButton") as? UIButton { // <-- This line
if searchBar.text != "" { cancelButton.isEnabled = true }
else { searchBar.showsCancelButton = false }
}
}
提前致谢。
UISearchBar
有一个名为cancelButton
的“隐藏”属性。顺便说一下,您正在访问一个私有变量,该名称是通过逆向工程找到的。它可能会在下一个iOS版本中被重命名,或者可能会导致您被AppStore拒绝。这三个方法之间有什么区别:valueForKey
、objectForKey
和valueForKeyPath
? - Larme