// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // import Foundation protocol DismissInputBarDelegate: class { func dismissInputBarDidTapDismiss(_ dismissInputBar: DismissInputBar) } class DismissInputBar: UIToolbar { weak var dismissDelegate: DismissInputBarDelegate? override init(frame: CGRect) { super.init(frame: frame) let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let dismissButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(didTapDone)) dismissButton.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 40) dismissButton.tintColor = UIColor.ows_systemPrimaryButton self.items = [spacer, dismissButton] self.isTranslucent = false self.isOpaque = true self.barTintColor = UIColor.lokiDarkestGray() self.autoresizingMask = .flexibleHeight self.translatesAutoresizingMaskIntoConstraints = false } required init?(coder aDecoder: NSCoder) { notImplemented() } @objc public func didTapDone() { self.dismissDelegate?.dismissInputBarDidTapDismiss(self) } } @objc public class DismissableTextField: UITextField, DismissInputBarDelegate { private let dismissBar: DismissInputBar override init(frame: CGRect) { self.dismissBar = DismissInputBar() super.init(frame: frame) self.inputAccessoryView = dismissBar dismissBar.dismissDelegate = self } required public init?(coder aDecoder: NSCoder) { notImplemented() } // MARK: DismissInputBarDelegate func dismissInputBarDidTapDismiss(_ dismissInputBar: DismissInputBar) { self.resignFirstResponder() } }