The UITextFieldDelegate is the preferred way to find this out.
- (void)textFieldDidBeginEditing:(UITextField *)textField
- this will only tell you that it has become the first responder / key field, this does not guarantee that the user modified the value
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
- this method will tell you when ever the user hits a key to change the text, a "paste" will cause multiple characters to be in the string, backspace over one, or delete of a selection will cause the string to be empty, …
- (void)textFieldDidEndEditing:(UITextField *)textField
- this is a common location to check the value in the field against the value in the model to see if an edit has occurred. this will only be called when the field relinquishes "key" status, note that a user could tap a button to cause the whole view to go away before this is called, often making it useful to track if any field you are interested in becomes the "key field" (see first method)
it can be useful to set break points in relevant implementations to familiarize yourself with their call order/logic