#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;
.