This commit is contained in:
Chris Li 2016-12-28 17:27:21 -05:00
parent 29dfe133c9
commit e7c988404d
4 changed files with 17 additions and 11 deletions

View File

@ -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

View File

@ -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) {

View File

@ -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 = ""
/**

View File

@ -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
}