2013-04-03 1 views
0

지금까지 몇 시간 동안 디버깅하려했지만 동일한 문제가있는 온라인 사용자는 보지 못했습니다.UITableView 편집 - 탭하여 길게 누르는 것만 빼기

이전에 예상 한대로 삭제 기능이 작동했는데 일부 코드를 추가 한 후 신비하게도 빼기 버튼이 작동하지 않았습니다. 처음에 나는 그들이 전혀 작동하지 않는다고 생각했지만 약 5 초 동안 내 수돗물을 가졌다면, 그렇게해야하는 것처럼 삭제 버튼을 돌리고 표시 할 것이라고 생각했습니다.

Tableview에는 일부 제스처가 있지만 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]; 
    } 
} 
+0

왜 '- tableView : didSelectRowAtIndexPath :'대신 탭 인식기를 사용하고 있습니까? 제스처 인식기를 설정하는 방법을 보여줄 수 있습니까? – danielbeard

+0

감사! 그것은 탭 제스처 문제를 파악할 때 올바른 방향으로 나를 지적했습니다. didSelectRowAtIndexPath를 얻을 수는 없지만 매우 잘 작동합니다. 셀을 탭하면 해당 메소드가 호출되지 않습니다. 나는 그 다음을 조사 할 것이다 – user1869469

+0

당신은 뷰 컨트롤러에'UITableView' 델리게이트 속성을 설정해야한다. – danielbeard

답변

0

의견에 제안 된대로 제스처가 문제의 원인임을 알았습니다. 탭 제스처를 2 번 터치로 설정하여 무슨 일이 일어 났는지 알게되었습니다. 그것은 예상대로 작동했기 때문에 그들은 서로 간섭하고 있었을 것입니다.

관련 문제