Skip to content

Instantly share code, notes, and snippets.

@graylikeme
Last active July 22, 2021 07:23
Show Gist options
  • Save graylikeme/0e7a3e7933151e4a628c5dadba5f94ce to your computer and use it in GitHub Desktop.
Save graylikeme/0e7a3e7933151e4a628c5dadba5f94ce to your computer and use it in GitHub Desktop.
protocol NVTextFieldReturnKeyProtocol {
func returnTapped()
}
class NVTextFieldCoordinator: NSObject, UITextFieldDelegate, NVTextFieldReturnKeyProtocol {
@Binding private var text: String
private let onStartEditing: (() -> Void)
private let onEndEditing: (() -> Void)
private let onReturnTap: (() -> Void)
init(text: Binding<String>, onStartEditing: @escaping (() -> Void), onEndEditing: @escaping (() -> Void), onReturnTap: @escaping (() -> Void)) {
_text = text
self.onStartEditing = onStartEditing
self.onEndEditing = onEndEditing
self.onReturnTap = onReturnTap
super.init()
}
@objc func textFieldDidChange(_ textField: UITextField) {
DispatchQueue.main.async { [weak self] in
self?.text = textField.text ?? ""
}
}
func textFieldDidBeginEditing(_ textField: UITextField) {
onStartEditing()
}
func textFieldDidEndEditing(_ textField: UITextField) {
onEndEditing()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
returnTapped()
return true
}
@objc func returnTapped() {
onReturnTap()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment