Add support for entering text to search via drag-and-drop
This commit is contained in:
parent
869e44737a
commit
f6c1f6c443
|
@ -157,7 +157,7 @@ extension RootSplitViewController: ContentSplitViewControllerDelegate {
|
||||||
}
|
}
|
||||||
guard let navigationController = searchViewController.navigationController else { return }
|
guard let navigationController = searchViewController.navigationController else { return }
|
||||||
if navigationController.viewControllers.count == 1 {
|
if navigationController.viewControllers.count == 1 {
|
||||||
searchViewController.searchBarTapPublisher.send()
|
searchViewController.searchBarTapPublisher.send("")
|
||||||
} else {
|
} else {
|
||||||
navigationController.popToRootViewController(animated: true)
|
navigationController.popToRootViewController(animated: true)
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,8 @@ final class SearchViewController: UIViewController, NeedsDependency {
|
||||||
// return collectionView
|
// return collectionView
|
||||||
// }()
|
// }()
|
||||||
|
|
||||||
let searchBarTapPublisher = PassthroughSubject<Void, Never>()
|
// value is the initial search text to set
|
||||||
|
let searchBarTapPublisher = PassthroughSubject<String, Never>()
|
||||||
|
|
||||||
private(set) lazy var discoveryViewController: DiscoveryViewController = {
|
private(set) lazy var discoveryViewController: DiscoveryViewController = {
|
||||||
let viewController = DiscoveryViewController()
|
let viewController = DiscoveryViewController()
|
||||||
|
@ -139,10 +140,10 @@ extension SearchViewController {
|
||||||
|
|
||||||
searchBarTapPublisher
|
searchBarTapPublisher
|
||||||
.throttle(for: 0.5, scheduler: DispatchQueue.main, latest: false)
|
.throttle(for: 0.5, scheduler: DispatchQueue.main, latest: false)
|
||||||
.sink { [weak self] in
|
.sink { [weak self] initialText in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
// push to search detail
|
// push to search detail
|
||||||
let searchDetailViewModel = SearchDetailViewModel()
|
let searchDetailViewModel = SearchDetailViewModel(initialSearchText: initialText)
|
||||||
searchDetailViewModel.needsBecomeFirstResponder = true
|
searchDetailViewModel.needsBecomeFirstResponder = true
|
||||||
self.navigationController?.delegate = self.searchTransitionController
|
self.navigationController?.delegate = self.searchTransitionController
|
||||||
// FIXME:
|
// FIXME:
|
||||||
|
@ -159,9 +160,13 @@ extension SearchViewController {
|
||||||
extension SearchViewController: UISearchBarDelegate {
|
extension SearchViewController: UISearchBarDelegate {
|
||||||
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
|
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
|
||||||
os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||||
searchBarTapPublisher.send()
|
searchBarTapPublisher.send("")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
|
||||||
|
searchBar.text = ""
|
||||||
|
searchBarTapPublisher.send(searchText)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - UISearchControllerDelegate
|
// MARK: - UISearchControllerDelegate
|
||||||
|
|
|
@ -301,6 +301,7 @@ extension SearchDetailViewController {
|
||||||
searchController.searchBar.sizeToFit()
|
searchController.searchBar.sizeToFit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
searchBar.text = viewModel.searchText.value
|
||||||
searchBar.delegate = self
|
searchBar.delegate = self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ extension SceneDelegate {
|
||||||
logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): select search tab")
|
logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): select search tab")
|
||||||
|
|
||||||
if let searchViewController = coordinator?.tabBarController.topMost as? SearchViewController {
|
if let searchViewController = coordinator?.tabBarController.topMost as? SearchViewController {
|
||||||
searchViewController.searchBarTapPublisher.send()
|
searchViewController.searchBarTapPublisher.send("")
|
||||||
logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): trigger search")
|
logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): trigger search")
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue