Проблемы с длительным нажатием в ячейке uitableview при редактировании

#iphone #objective-c #ios #ios4

#iPhone #objective-c #iOS #ios4

Вопрос:

Пожалуйста, посмотрите мой код ниже. Когда я вхожу в режим редактирования, я не могу перетаскивать ячейки вверх и вниз из-за распознавателя длительных нажатий. Если я удалю распознаватель длительного нажатия, все будет работать так, как должно.

Любая помощь приветствуется.

     - (void)startEditingIndex
    {
        [self.navigationController setToolbarHidden:NO animated:YES];
        [self.tableView setEditing:YES animated:YES];
    }


    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
            cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
            cell.textLabel.numberOfLines = 0;
        }

        UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(startEditingIndex)];
        [cell addGestureRecognizer:longPress];
        [longPress release];


        NSString *cellText = @"Text";

        cell.textLabel.text = [[self.indexArry objectAtIndex:[[self.indexOrder objectAtIndex:indexPath.row] intValue]] objectForKey:cellText];

        return cell;
    }
  

Ответ №1:

Установите свой класс в качестве делегата longPress и реализуйте следующий метод делегирования:

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ![self.tableView isEditing];
}
  

Комментарии:

1. Спасибо. это выглядит как @interface RootViewController: UITableViewController <UIGestureRecognizerDelegate> { Я добавил ваш код, и он ничего не делает по-другому.

2. Вам нужно longPress.delegate = self; .