2013-08-22 46 views
1

我在UITableViewCell上添加了一個手勢識別器,將單元格拖到同一視圖控制器中的其他視圖。爲此,我在單元格中添加了一個長按手勢識別器。啓用/禁用輕掃以在UITableViewCell上動態刪除功能

但我還需要刷卡刪除功能,當我們不拖動單元格。但是,當我開始拖動並向一個方向移動(向右或向左)時,單元格會觸發要掃描以進行刪除的呼叫(這是默認設置)。

我需要在此刻停止此調用。重載tableView不是一個選項,因爲在重新加載後,我將放棄所選單元格進行拖動。

+0

嘗試過....但是這個函數每次調用時都會調用表格,並且如前所述我無法重新加載表格。此外,editstyle屬性是單元格的只讀屬性...... –

回答

0

一些猜測其中是否適用於你 -

  1. 檢查tableView:shouldIndentWhileEditingRowAtIndexPath:委託方法。
  2. 關閉編輯模式將滑動手勢和長按手勢直接與該函數一起處理多個手勢(只是要精確)。

現在,你可以在這裏做的是增加長按時間或只是添加功能來檢測多個手勢。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 
+0

您是否建議放置自定義的輕掃式刪除手勢? –

+0

現在,您可以在這裏做的是增加長按時間或只是添加功能來檢測多個手勢。 ' - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer應該同時識別帶有測試者識別器:(UIGestureRecognizer *)otherGestureRecognizer {YES;};}; }' –

+0

@anky_beliveMe ---感謝Man ...它工作正常.....只需{return No;}以實現我的功能 –

2

試試下面的代碼它的使用indexPath它可在該方法中的ios可用的UITableViewDelegate方法

- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Detemine if it's in editing mode 
if (self.editing) 
{ 
    return UITableViewCellEditingStyleDelete; //enable when editing mode is on 
} 

return UITableViewCellEditingStyleNone; 
} 

您也可以關閉滑動刪除在特定的部分具體行一個

斯威夫特3版本:

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle { 
    if tableView.isEditing { 
     return .delete 
    } 
    return .none 
} 
+0

這不起作用!? –

相關問題