/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import IGListKit import IGListSwiftKit protocol SearchSectionControllerDelegate: AnyObject { func searchSectionController(_ sectionController: SearchSectionController, didChangeText text: String) } final class SearchSectionController: ListSectionController, UISearchBarDelegate, ListScrollDelegate { weak var delegate: SearchSectionControllerDelegate? override init() { super.init() scrollDelegate = self } override func sizeForItem(at index: Int) -> CGSize { return CGSize(width: collectionContext!.containerSize.width, height: 44) } override func cellForItem(at index: Int) -> UICollectionViewCell { let cell: SearchCell = collectionContext.dequeueReusableCell(for: self, at: index) cell.searchBar.delegate = self return cell } // MARK: UISearchBarDelegate func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { delegate?.searchSectionController(self, didChangeText: searchText) } func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { delegate?.searchSectionController(self, didChangeText: searchBar.text!) } // MARK: ListScrollDelegate func listAdapter(_ listAdapter: ListAdapter, didScroll sectionController: ListSectionController) { if let searchBar = (collectionContext?.cellForItem(at: 0, sectionController: self) as? SearchCell)?.searchBar { searchBar.resignFirstResponder() } } func listAdapter(_ listAdapter: ListAdapter, willBeginDragging sectionController: ListSectionController) {} func listAdapter(_ listAdapter: ListAdapter, didEndDragging sectionController: ListSectionController, willDecelerate decelerate: Bool) {} }