I’m have a weird issue here. I have a UITableView using custom UITableViewCells. Everything is working as expected except this on particular issue.
Here’s the scenario:
I need to remove the “$” symbol in a UITextField right before editing begins. This is done via the textFieldShouldBeginEditing: method.
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
LifeEarningsLineItemTableViewCell *cell = (LifeEarningsLineItemTableViewCell *)[self tableViewCellContainingObject:textField inTableView:self.lifeEarningsTableView];
if (textField == cell.itemAmount) {
/*Remove currency symbol for editing.*/
NSString *currencySymbol = [self.currencyFormatter currencySymbol];
NSMutableString *mutableText = [NSMutableString stringWithString:textField.text];
[mutableText replaceOccurrencesOfString:currencySymbol withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [mutableText length])];
textField.text = mutableText;
}
return YES;
}
Here’s the problem:
- Between different rows, moving from textField1 to textField2 (in a different row), the “$” is removed, this is GOOD.
- Within the same row, moving from textField1 to textField2, the “$” is not removed, this is BAD.
Why is the “$” not being removed within the same row, but does in different rows?
Here’s is a visual representation of the issue: 
[EDIT…ADDITION]
I get these logs with these flows:

SHOULD BEGIN…..Row:0, Tag:0
SHOULD BEGIN…..Row:0, Tag:1
DID END…..Row:0, Tag:0
DID END…..Row:0, Tag:1

SHOULD BEGIN…..Row:0, Tag:0
SHOULD BEGIN…..Row:1, Tag:1
DID END…..Row:0, Tag:0
DID END…..Row:1, Tag:1
Also, here is the tableViewCellContainingObject:inTableView:tableView method:
- (UITableViewCell *)tableViewCellContainingObject:(UIView *)view inTableView:(UITableView *)tableView {
CGPoint objectRectInTableViewCoordinates = [tableView convertPoint:view.bounds.origin fromView:view];
NSIndexPath *cellIndexPath = [tableView indexPathForRowAtPoint:objectRectInTableViewCoordinates];
return [tableView cellForRowAtIndexPath:cellIndexPath];
}
And the textFieldDidEndEditing method:
- (void)textFieldDidEndEditing:(UITextField *)textField {
LifeEarningsLineItemTableViewCell *cell = (LifeEarningsLineItemTableViewCell *)[self tableViewCellContainingObject:textField inTableView:self.lifeEarningsTableView];
LifeEarningsLineItem *lifeEarningsLineItem = [self.lifeEarningsFetchedResultsController objectAtIndexPath:[self.lifeEarningsTableView indexPathForCell:cell]];
if (textField == cell.itemAmount) {
NSNumber *absInteger = [NSNumber numberWithInteger:abs([textField.text integerValue])];
textField.text = [self.currencyFormatter stringFromNumber:absInteger];
lifeEarningsLineItem.amount = absInteger;
[self sumAmountsAndDisplay];
} else if (textField == cell.itemName) {
lifeEarningsLineItem.name = textField.text;
}
}
I think your solution (decoupling the FRC during editing) may be a little drastic and could have unforeseen effects. Here are a couple of alternative suggestions. I am assuming the problem is caused by the table reloading the row you are editing once you have finished editing the first field in the cell.