您可以通过以下步骤在 UISearchBar 中设置文本而不激活 UISearchDisplayController:
textDidChange
方法。textDidChange
方法中,将文本添加到输入框中但不激活搜索显示控制器。textDidChange
方法中,调用 setShowsSearchButton(true, animated: false)
方法来显示搜索按钮,但不要激活搜索显示控制器。canCancelContentTouches
方法,以允许搜索按钮被点击并关闭搜索显示控制器。以下是一个示例代码:
class CustomSearchBar: UISearchBar {
override func textDidChange(_ searchText: String) {
super.textDidChange(searchText)
if searchText.count > 0 {
setShowsSearchButton(true, animated: false)
} else {
setShowsSearchButton(false, animated: false)
}
}
override func canCancelContentTouches(_ invalidating: Bool) -> Bool {
return true
}
}
在上面的代码中,我们覆盖了 textDidChange
方法,以便在文本更改时处理不激活 UISearchDisplayController 的逻辑。在 textDidChange
方法中,我们首先调用 setShowsSearchButton(true, animated: false)
方法来显示搜索按钮,但不要激活搜索显示控制器。然后,在自定义的 UISearchBar 类中,我们实现了 canCancelContentTouches
方法,以允许搜索按钮被点击并关闭搜索显示控制器。
注意,您需要将您的自定义 UISearchBar 类应用到您的 UISearchBar 实例。例如,在您的视图控制器中,您需要将自定义的 UISearchBar 实例设置为 searchBar
属性:
override func viewDidLoad() {
super.viewDidLoad()
searchBar.setShowsSearchButton(true, animated: false)
searchBar.customSearchBar = CustomSearchBar()
}
现在,当您在 UISearchBar 中输入文本时,搜索按钮将显示,但不会激活搜索显示控制器。当您点击搜索按钮时,搜索显示控制器将显示,并允许您执行搜索。
领取专属 10元无门槛券
手把手带您无忧上云