2

UITableViewCell にジェスチャ認識エンジンを追加して、セルを同じビュー コントローラー内の他のビューにドラッグしました。このために、長押しジェスチャ認識機能をセルに追加しました。

ただし、セルをドラッグしていないときに機能を削除するには、スワイプも必要です。しかし、ドラッグを開始して一方向(右または左)に移動すると、セルはswipe-to-delete(デフォルト)の呼び出しも開始します。

現時点でこの呼び出しを停止する必要があります。リロード後、ドラッグのために選択したセルが失われるため、tableView のリロードはオプションではありません。

4

2 に答える 2

2

iOSで利用可能なUITableViewDelegateメソッドの1つである以下のコードを試してください

- (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;
}

このメソッドで利用可能なindexPathを使用して、特定のセクションの特定の行を削除するスワイプをオフにすることもできます

スウィフト 3 バージョン:

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    if tableView.isEditing {
        return .delete
    }
    return .none
}
于 2013-09-05T06:45:31.267 に答える
0

それらのいずれかがあなたのために働くかどうか、いくつかの推測-

  1. tableView:shouldIndentWhileEditingRowAtIndexPath:委任方法を確認してください。
  2. 編集モードをオフにして、複数のジェスチャーを処理する機能とともに、スワイプジェスチャーと長押しジェスチャーを直接配置します(正確には)。

ここでできることは、長押し時間を増やすか、複数のジェスチャーを検出する機能を追加することです。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{ 
    return YES; 
}
于 2013-08-23T07:00:44.083 に答える