         }
     }
 
+    /// Apply the `inputAccessoryView`. Useful when you want the Done button but the text field does not have any next or previous text fields.
     func applyInputAccessoryView() {
         let previousButton = UIBarButtonItem(title: "❬", style: .Plain, target: self, action: #selector(previousButtonDidTap))
         previousButton.enabled = previousTextField != nil

var NextTextFieldKey: Int8 = 0
var PreviousTextFieldKey: Int8 = 0

@objc public protocol UITextFieldNavigationDelegate: UITextFieldDelegate {
    optional func textFieldNavigationDidTapPreviousButton(textField: UITextField)
    optional func textFieldNavigationDidTapNextButton(textField: UITextField)
    optional func textFieldNavigationDidTapDoneButton(textField: UITextField)
}

public extension UITextField {

    @IBOutlet weak var nextTextField: UITextField? {
        get {
            return (objc_getAssociatedObject(self, &NextTextFieldKey) as? WeakObjectContainer)?.object as? UITextField

        }
    }

    /// The previous text field. Not retained. This is set automatically on the other text field when you set the `nextTextField`.
    weak internal(set) var previousTextField: UITextField? {
        get {
            return (objc_getAssociatedObject(self, &PreviousTextFieldKey) as? WeakObjectContainer)?.object as? UITextField
