Swift iOS 13 - searchBar 中的 scopeBar 未显示在 TitleView 中
Swift iOS 13 - scopeBar in searchBar not displayed in TitleView
在 iOS13 之前,当搜索栏成为第一响应者时,下面的代码显示带有两个范围栏按钮的范围栏,这是预期的行为。
在 iOS 13 中,搜索栏仍然可以正常工作,但是不再显示范围栏。 Apple 的 UISearchBarDelegate 文档似乎建议使用 .setShowsScope(show:(bool), animated:(bool)) 和 .sizeToFit() for iOS 13。但是,这些函数调用似乎没有任何效果。寻找像 iOS 12 及更早版本那样显示范围栏的想法。
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
//eventSearchBar is name of UISearchBar
//eventSearchBar.delegate has already been called out as self
//eventSearchBar is not owned by a UISearchController
self.navigationController?.setNavigationBarHidden(true, animated: true)
eventSearchBar.setShowsCancelButton(true, animated: true)
eventSearchBar.frame.size.height = 68
TitleView.frame.size.height = 132
eventSearchBar.scopeButtonTitles = ["Category", "Project"]
eventSearchBar.showsScopeBar = true
if eventSearchBar.text! == "" {
self.tableView.reloadData()
} else {
if eventSearchBar.selectedScopeButtonIndex == 0 {
self.loadSearchElements(self.refreshControl)
} else {
self.loadProjectSearchElements(self.refreshControl)
}
}
}
问题已解决。问题是情节提要 searchBar 对象已更新 iOS 13。解决方案是从情节提要中的 viewController 中删除 searchBar 并将其替换为从对象列表中拖动的新 searchBar。新旧 searchBar 看起来一模一样,但与它们的委托属性的连接明显不同。
在 iOS13 之前,当搜索栏成为第一响应者时,下面的代码显示带有两个范围栏按钮的范围栏,这是预期的行为。
在 iOS 13 中,搜索栏仍然可以正常工作,但是不再显示范围栏。 Apple 的 UISearchBarDelegate 文档似乎建议使用 .setShowsScope(show:(bool), animated:(bool)) 和 .sizeToFit() for iOS 13。但是,这些函数调用似乎没有任何效果。寻找像 iOS 12 及更早版本那样显示范围栏的想法。
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
//eventSearchBar is name of UISearchBar
//eventSearchBar.delegate has already been called out as self
//eventSearchBar is not owned by a UISearchController
self.navigationController?.setNavigationBarHidden(true, animated: true)
eventSearchBar.setShowsCancelButton(true, animated: true)
eventSearchBar.frame.size.height = 68
TitleView.frame.size.height = 132
eventSearchBar.scopeButtonTitles = ["Category", "Project"]
eventSearchBar.showsScopeBar = true
if eventSearchBar.text! == "" {
self.tableView.reloadData()
} else {
if eventSearchBar.selectedScopeButtonIndex == 0 {
self.loadSearchElements(self.refreshControl)
} else {
self.loadProjectSearchElements(self.refreshControl)
}
}
}
问题已解决。问题是情节提要 searchBar 对象已更新 iOS 13。解决方案是从情节提要中的 viewController 中删除 searchBar 并将其替换为从对象列表中拖动的新 searchBar。新旧 searchBar 看起来一模一样,但与它们的委托属性的连接明显不同。