project_files/HedgewarsMobile/Classes/EditableCellView.m
changeset 3878 348f4104461d
parent 3829 81db3c85784b
child 3904 22e4d74240e5
equal deleted inserted replaced
3877:bd1662bc6ed1 3878:348f4104461d
   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;