// // CommonTextFieldSearch.swift // Wallet // // Created by Saveliy Stavitsky on 2/9/21. // Copyright © 2021 AM. All rights reserved. // import UIKit @objc protocol CommonTextFieldSearchDelegate: AnyObject { @objc optional func textFieldShouldBeginEditing(_ textField: CommonTextFieldSearch) -> Bool @objc optional func textFieldShouldEndEditing(_ textField: CommonTextFieldSearch) -> Bool @objc optional func textField(_ textField: CommonTextFieldSearch, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool @objc optional func textFieldShouldClear(_ textField: CommonTextFieldSearch) -> Bool @objc optional func textFieldDidChange(_ textField: CommonTextFieldSearch) } class CommonTextFieldSearch: CommonViewCustom { @IBOutlet private var searchImageView: UIImageView! @IBOutlet private var searchTextField: UITextField! @IBOutlet var clearButtton: UIButton! @IBOutlet weak var delegate: CommonTextFieldSearchDelegate? @IBInspectable public var lzPlaceholder: String? { get { searchTextField.placeholder } set { searchTextField.attributedPlaceholder = newValue?.localized.attributed(style: .medium, size: 14, color: Asset.textPebble.color) } } @IBInspectable var text: String? { get { searchTextField.text } set { searchTextField.text = newValue } } var keyboardType: UIKeyboardType { get { searchTextField.keyboardType } set { searchTextField.keyboardType = newValue } } override func setup() { super.setup() searchTextField.clearButtonMode = .never searchTextField.font = .font(style: .medium, size: 14) searchTextField.textColor = Asset.textGranite.color searchTextField.delegate = self } @IBAction func clearPressed(_ sender: Any) { searchTextField.text = "" searchTextField.resignFirstResponder() clearButtton.isHidden = true _ = delegate?.textFieldShouldClear?(self) delegate?.textFieldDidChange?(self) } @discardableResult override func resignFirstResponder() -> Bool { searchTextField.resignFirstResponder() } override var isFirstResponder: Bool { searchTextField.isFirstResponder } @discardableResult override func becomeFirstResponder() -> Bool { searchTextField.becomeFirstResponder() } } extension CommonTextFieldSearch: UITextFieldDelegate { func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { delegate?.textFieldShouldBeginEditing?(self) ?? true } func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { delegate?.textFieldShouldEndEditing?(self) ?? true } func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let needsChanges = self.delegate?.textField?(self, shouldChangeCharactersIn: range, replacementString: string) if needsChanges == nil || needsChanges == false { self.delegate?.textFieldDidChange?(self) } clearButtton.isHidden = textField.text?.isEmpty ?? true return needsChanges ?? true } }