equal
deleted
inserted
replaced
136 -(BOOL) textFieldShouldReturn:(UITextField *)aTextField { |
136 -(BOOL) textFieldShouldReturn:(UITextField *)aTextField { |
137 return ([aTextField.text length] >= self.minimumCharacters); |
137 return ([aTextField.text length] >= self.minimumCharacters); |
138 } |
138 } |
139 |
139 |
140 // the textfield has been modified, tell the delegate to do something |
140 // the textfield has been modified, tell the delegate to do something |
141 -(void) textFieldDidEndEditing:(UITextField *)aTextField{ |
141 -(void) textFieldDidEndEditing:(UITextField *)aTextField { |
|
142 // this forces a save when user selects a new field |
|
143 if ([self.textField.text isEqualToString:self.oldValue] == NO) |
|
144 [self save:aTextField]; |
|
145 |
|
146 // restores default behaviour on caller |
142 ((UITableView*)[self superview]).scrollEnabled = YES; |
147 ((UITableView*)[self superview]).scrollEnabled = YES; |
143 |
|
144 [(UITableViewController *)delegate navigationItem].rightBarButtonItem = [(UITableViewController *)delegate navigationItem].backBarButtonItem; |
148 [(UITableViewController *)delegate navigationItem].rightBarButtonItem = [(UITableViewController *)delegate navigationItem].backBarButtonItem; |
145 [(UITableViewController *)delegate navigationItem].leftBarButtonItem = nil; |
149 [(UITableViewController *)delegate navigationItem].leftBarButtonItem = nil; |
146 } |
150 } |
147 |
151 |
148 #pragma mark - |
152 #pragma mark - |
152 [self.textField becomeFirstResponder]; |
156 [self.textField becomeFirstResponder]; |
153 } |
157 } |
154 |
158 |
155 // the user pressed cancel so hide keyboard |
159 // the user pressed cancel so hide keyboard |
156 -(void) cancel:(id) sender { |
160 -(void) cancel:(id) sender { |
|
161 // reverts any changes and performs a fake save for removing the keyboard |
157 self.textField.text = self.oldValue; |
162 self.textField.text = self.oldValue; |
158 [self save:sender]; |
163 [self save:sender]; |
159 } |
164 } |
160 |
165 |
161 // send the value to the delegate |
166 // send the value to the delegate (called before textFieldDidEndEditing) |
162 -(void) save:(id) sender { |
167 -(void) save:(id) sender { |
163 if (delegate == nil || ![delegate respondsToSelector:@selector(saveTextFieldValue:withTag:)]) |
168 if (delegate == nil || [delegate respondsToSelector:@selector(saveTextFieldValue:withTag:)] == NO) |
164 return; |
169 return; |
165 |
170 |
166 // don't save if the textfield is invalid |
171 // don't save if the textfield is invalid |
167 if (![self textFieldShouldReturn:textField]) |
172 if ([self textFieldShouldReturn:textField] == NO) |
168 return; |
173 return; |
169 |
174 |
170 [delegate saveTextFieldValue:self.textField.text withTag:self.tag]; |
175 [delegate saveTextFieldValue:self.textField.text withTag:self.tag]; |
171 [self.textField resignFirstResponder]; |
176 [self.textField resignFirstResponder]; |
172 self.oldValue = nil; |
177 self.oldValue = nil; |