Create a UITextField
subclass and override hitTest point
method and return nil
class CustomTextField: UITextField {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
return nil
}
}
Use the custom class in the view controllers. In viewDidAppear
use becomeFirstResponder
in the first textfield, in textFieldShouldReturn
method move to next textfield. Make sure to set delegate to all textfields.
class ViewController: UIViewController, UITextFieldDelegate {
let textField1 = CustomTextField()
let textField2 = CustomTextField()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
textField1.delegate = self
textField1.returnKeyType = .next
view.addSubview(textField1)
textField2.delegate = self
textField2.returnKeyType = .send
view.addSubview(textField2)
//add constraints or set frame
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
textField1.becomeFirstResponder()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == textField1 {
textField2.becomeFirstResponder()
}
return true
}
}