I have these outlets in my app:
@IBOutlet var name1: UITextField!
@IBOutlet var name2: UITextField!
@IBOutlet var name3: UITextField!
@IBOutlet var name4:
The textField:shouldChangeCharactersInRange: method gets called BEFORE the contents of the text field have changed.
You should special-case the current text field and figure out if it's new contents are going to be blank after the edit.
Something like this:
textField.text.length > range.length - replacementString.length
(That's off the top of my head, and not debugged. Plus you would have to come up with logic that makes sure all the other fields are non-blank, and use the logic above to test the contents of the current field.)