Я пытался отладить это в течение нескольких часов, и я не видел никого онлайн, у которого такая же проблема.Редактирование UITableView - минус только нажатие на нажатие и удержание
У меня была функция удаления, работающая как ожидалось ранее, после добавления некоторого кода таинственно кнопки минус перестали функционировать. Сначала я думал, что они вообще не работают, но потом выяснили, что если бы я держал мой кран примерно на 5 секунд, он бы повернул и отобразил кнопку удаления, как следует.
Есть несколько жестов на столе, но никаких жестов LongPress. Ячейки являются пользовательскими ячейками, но это не вызывало проблемы, когда я впервые работал. Любая помощь приветствуется. Вот соответствующий код:
///
/// Pushes detail view for item swiped
///
- (IBAction)cellSwipeLeft:(UISwipeGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded && ![self isEditing]) {
NSIndexPath *gestureIndexPath = [self modelIndexPathForIndexPath:[self indexPathForUIGestureRecognizer:sender]];
// swiped left
}
}
///
/// Checks off reminder in list
///
- (IBAction)cellSwipeRight:(UISwipeGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded && ![self isEditing]) {
NSIndexPath *gestureIndexPath = [self modelIndexPathForIndexPath:[self indexPathForUIGestureRecognizer:sender]];
//swiped right
}
}
- (IBAction)cellTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded && ![self.tableView isEditing]) {
NSIndexPath *gestureIndexPath =
[self modelIndexPathForIndexPath:[self indexPathForUIGestureRecognizer:sender]];
// push detail view
}
}
///
/// Makes tableview rows editable
///
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
///
/// Returns editing style of tableview
///
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
///
/// Toggles tableview editing
///
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
}
///
/// Deletes selected rows
///
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[self deleteReminderAtIndexPath:indexPath];
// Animate deletion
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[[self tableView] deleteRowsAtIndexPaths:indexPaths
withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
Почему вы используете распознаватель крана вместо '- tableView: didSelectRowAtIndexPath:'? Можете ли вы показать, как вы настраиваете распознаватели жестов? – danielbeard
Спасибо! Это указывало мне в правильном направлении, когда выяснял проблему с жестким желобом. Хотя я не могу получить didSelectRowAtIndexPath: чтобы работать очень хорошо. Простое нажатие на ячейку не вызывает этот метод. Я буду изучать следующий – user1869469
Вы должны установить свойство делегата 'UITableView' для вашего контроллера представления. – danielbeard