2014-01-06 64 views
0

我希望用戶在行上敲擊兩次以顯示警報視圖以顯示來自所選行的詳細信息。目前我已經實施了另外兩個手勢,從左向右滑動並長按1秒。 下面是代碼:如何在我的應用程序中檢測iOS中連續兩次敲擊iOS

- (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:@"Cell"] autorelease]; 
    } 

    //long press gesture 
    UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
              initWithTarget:self action:@selector(handleLongPress:)]; 
    lpgr.minimumPressDuration = 1.00; 
    [cell addGestureRecognizer:lpgr]; 
    //end of long press gesture11111 
    //swipe left-right 
    UISwipeGestureRecognizer *swipeLeftRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGestureLeftRight:)]; 
    [swipeLeftRight setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft)]; 
    [cell addGestureRecognizer:swipeLeftRight]; 
    //end of swipe left-right 


    [self configureCell:cell atIndexPath:indexPath]; 

    return cell; 
} 

我還沒有發現任何關於這一點,可以應用到我的代碼,使任何建議將不勝感激。

+1

添加另一個gesturerecognizer(UITapGestureRecognizer)並將'numberOfTaps'設置爲兩個。以防萬一,您還需要將'requiresGestureRecognizerToFail'設置爲其他手勢識別器。 – Putz1103

+0

謝謝,我會試試看。 – mvasco

+0

您是否需要快速連續使用2個水龍頭,或者水龍頭之間的持續時間不是一個因素? – n00bProgrammer

回答

1

您可以通過三種不同的方式來完成此操作(視所需效果和編碼風格而定)。

第一種方法是添加一個雙擊手勢識別器(如果您正在尋找雙擊而不是兩次敲擊任何時間)。我想你可以自己編寫代碼。

第二是檢測細胞的選擇:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Check if the cell at indexPath is currently the tableview's selected cell then you have double tap 
} 

第三個是相同於該第二,除了創建一個indexPath變量,並將其設置在didselectrow方法。然後,如果下一個didselectrow呼叫是完全相同的indexPath,那麼你有雙擊。

我的投票將是保存的變量。我不確定tableview和單元格的「selected」屬性有多可靠。但是你也必須實現didDeselectRow函數,因爲它可以在tableview選擇以外的情況下被調用。

+0

再次感謝您,爲了保持當前的代碼,我會嘗試您的第一種方式。但是在嘗試之前的一個問題,此刻,默認情況下,一個水龍頭打開另一個視圖控制器。如果我添加雙擊手勢識別器,它會影響默認行爲嗎? – mvasco

+0

是的。您可能需要添加一個singletap識別器和一個雙重識別器。單標識符必須具有雙重標識作爲「識別器必須」。這是處理竊聽/輕掃事物的最簡單方法。蘋果內置的選項非常強大。 – Putz1103

+0

謝謝,就是這樣。 – mvasco

相關問題