2013-04-03 24 views
0

我一直在試圖調試這個小時現在,我還沒有看到任何人在網上有相同的問題。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]; 
    } 
} 
+0

爲什麼你使用tap識別器而不是'-tableView:didSelectRowAtIndexPath:'?你能告訴你如何設置手勢識別器嗎? – danielbeard

+0

謝謝!這指出我在找出輕拍姿勢問題的正確方向。雖然我無法得到didSelectRowAtIndexPath:也很好地工作。單元格上的一個簡單的輕擊不會調用該方法。我將繼續研究下一個 – user1869469

+0

您必須將'UITableView'委託屬性設置爲您的視圖控制器。 – danielbeard

回答

0

我發現按照評論中所建議的輕敲手勢導致了該問題。我通過將輕擊手勢設置爲2觸摸意識到這一點,只是爲了看看發生了什麼。它按預期工作,所以它們一定是互相干擾的。

相關問題