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
}
}