diff --git a/Kiwix-iOS/Controller/Main/MainDelegates.swift b/Kiwix-iOS/Controller/Main/MainDelegates.swift index 990c7fe0..b4344e16 100644 --- a/Kiwix-iOS/Controller/Main/MainDelegates.swift +++ b/Kiwix-iOS/Controller/Main/MainDelegates.swift @@ -70,6 +70,12 @@ extension MainController: SearchBarDelegate, SearchContainerDelegate { controllers.search.searchText = text } + func shouldReturn(searchBar: SearchBar) -> Bool { + let controller = controllers.search.resultController! + controller.selectFirstResult() + return controller.searchResults.count > 0 + } + private func showSearch(animated: Bool) { let controller = controllers.search controller.delegate = self diff --git a/Kiwix-iOS/Controller/Search/SearchContainer.swift b/Kiwix-iOS/Controller/Search/SearchContainer.swift index 0b41339b..9545ee89 100644 --- a/Kiwix-iOS/Controller/Search/SearchContainer.swift +++ b/Kiwix-iOS/Controller/Search/SearchContainer.swift @@ -14,7 +14,7 @@ class SearchContainer: UIViewController { @IBOutlet weak var dimView: UIView! @IBOutlet weak var scopeAndHistoryContainer: UIView! @IBOutlet weak var resultContainer: UIView! - private var resultController: SearchResultController! + private(set) var resultController: SearchResultController! var delegate: SearchContainerDelegate? @IBAction func handleDimViewTap(_ sender: UITapGestureRecognizer) { diff --git a/Kiwix-iOS/Controller/Search/SearchResultController.swift b/Kiwix-iOS/Controller/Search/SearchResultController.swift index 0d7d414f..47ab7bba 100644 --- a/Kiwix-iOS/Controller/Search/SearchResultController.swift +++ b/Kiwix-iOS/Controller/Search/SearchResultController.swift @@ -12,7 +12,7 @@ import DZNEmptyDataSet class SearchResultController: SearchBaseTableController, UITableViewDataSource, UITableViewDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate { - private var searchResults = [SearchResult]() + private(set) var searchResults = [SearchResult]() private var searchText = "" /** diff --git a/Kiwix-iOS/View/SearchBar.swift b/Kiwix-iOS/View/SearchBar.swift index 8f000b04..4de15022 100644 --- a/Kiwix-iOS/View/SearchBar.swift +++ b/Kiwix-iOS/View/SearchBar.swift @@ -8,7 +8,7 @@ import UIKit -class SearchBar: UIView { +class SearchBar: UIView, UITextFieldDelegate { private let backgroundView = SearchBarBackgroundView() private let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .light)) @@ -24,7 +24,6 @@ class SearchBar: UIView { } } - // MARK: - Overrides override init(frame: CGRect) { @@ -63,10 +62,6 @@ class SearchBar: UIView { frame = CGRect(x: left, y: 0, width: right - left, height: superview.bounds.height).insetBy(dx: 10, dy: 0) } - deinit { -// NotificationCenter.default.removeObserver(self, name: .UITextFieldTextDidEndEditing, object: textField) - } - // MARK: - func setup() { @@ -80,12 +75,12 @@ class SearchBar: UIView { backgroundView.addSubview(visualEffectView) addSubview(textField) + textField.delegate = self + textField.returnKeyType = .go textField.isUserInteractionEnabled = false textField.translatesAutoresizingMaskIntoConstraints = false addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-[view]-|", options: .alignAllCenterY, metrics: nil, views: ["view": textField])) addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[view]-|", options: .alignAllCenterX, metrics: nil, views: ["view": textField])) - -// NotificationCenter.default.addObserver(self, selector: #selector(SearchBar.textFieldDidEndEditing), name: .UITextFieldTextDidEndEditing, object: textField) } func textDidChange(textField: UITextField) { @@ -103,6 +98,10 @@ class SearchBar: UIView { } } + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + return delegate?.shouldReturn(searchBar: self) ?? false + } + // MARK: - Responder override var isFirstResponder: Bool { @@ -148,7 +147,7 @@ private class SearchBarTextField: UITextField { func setup() { placeholder = "Search" - addTarget(superview, action: #selector(SearchBar.textDidChange(textField:)), for: UIControlEvents.editingChanged) + addTarget(superview, action: #selector(SearchBar.textDidChange(textField:)), for: .editingChanged) autocorrectionType = .no autocapitalizationType = .none @@ -256,4 +255,5 @@ protocol SearchBarDelegate: class { func didBecomeFirstResponder(searchBar: SearchBar) func didResignFirstResponder(searchBar: SearchBar) func textDidChange(text: String, searchBar: SearchBar) + func shouldReturn(searchBar: SearchBar) -> Bool }