2013-08-22 47 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

这不起作用!? –

相关问题