Я использую пользовательское делегирование с моим UITextField в пользовательском UITableViewCell. В основном у меня UITextFields на моем UITableView, и в режиме редактирования я хочу иметь возможность редактировать содержимое внутри UITextField.UITextField в ячейке UITableView ведет себя странно с shouldChangeCharactersInRange
Моя проблема заключается в том, что когда я перехожу в режим редактирования и пытаюсь ввести что-то в текстовое поле, я могу только набрать один символ, и он удваивается. В этом примере я попытался ввести «p», и он позволяет мне вводить «p», и он изменяется на «pp».
Вот мой код. Как FYI я довольно новичок в iOS/программировании/пользовательском делегировании/пользовательском UITableViewCells.
UITableViewCell подкласс .h:
@protocol MenuTableViewCellDelegate <NSObject>
- (void)updatedFoodItem:(NSString *)foodItem fromCell:(id)sender;
@end
@interface MenuTableViewCell : UITableViewCell <UITextFieldDelegate>
@property (nonatomic, weak) id <MenuTableViewCellDelegate> delegate;
@property (weak, nonatomic) IBOutlet UITextField *foodTextField;
@property (weak, nonatomic) IBOutlet UITextField *priceTextField;
@end
UITableViewCell .m:
- (void)awakeFromNib {
self.foodTextField.delegate = self;
}
// Delegate method for tableview cell - food item text field is within cell.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
[self.delegate updatedFoodItem:string fromCell:self];
return YES;
}
В моей ViewController.m:
- (void)updatedFoodItem:(NSString *)foodItem fromCell:(MenuTableViewCell *)cell
{
NSIndexPath *p = [self.menuTableView indexPathForCell:cell];
id item = self.menuItemsArray[p.row];
cell.foodTextField.text = foodItem;
}
Кстати я понимаю, что выше, вероятно, ISN Пока я не обновляю свои данные, я еще не понял этого, поэтому любой совет будет замечательным.
Полезно, спасибо ... –