2016-08-25 3 views
0

次のシナリオをデバッグして、UITableViewセルが並べ替えられない理由を理解する方法を理解しようとしています。UITableViewセルの並べ替えのドラッグ操作が予期せず停止する

  1. [編集]メニュー項目をタップすると、テーブルビューが編集モードになります。
  2. 編集モードでは、セルを削除できます。
  3. セルの並べ替えコントロールをタッチしてドラッグして、セルの並べ替えを試みます。
  4. セルのアウトラインが数ピクセルのドラッグ方向に移動しますが、その後でも指をドラッグしても元の位置にスナップバックします。コードで

  • UITableViewDelegate:targetIndexPathForMoveFromRowAtIndexPathと呼ばれることは決してありません。これは、セルが別のセルの上に乗る前の元の位置にスナップするUIのフィードバックと一貫しているように見えます。
  • UITableViewDataSource:canMoveRowAtIndexPathは、すべての行に対してtrueを返します。
  • UITableViewDataSource:moveRowAtIndexPathは、セルが元の位置にスナップバックし、sourceIndexPath値とdestinationIndexPath値が同じになると、常に呼び出されます。 -

同じビューコントローラコードとストーリーボードは、別のプロジェクトのセルを並べ替えるために正しく機能します。

私はstackoverflowとGoogleを一日検索しましたが、セルドラッグイベントがキャンセルされる原因については何の参照も見つかりませんでした。

この問題のデバッグにどのように取り組むことができると思いますか?

+0

あなたTableViewControllerのより多くのコードが必要になります。このコードを追加する

は、問題を修正しました – Dmitry

答えて

1

答えが見つかりましたが、UITableViewコードとは関係ありませんでした。

マイコードには、スライドメニューパネルの表示/非表示を処理するプログラムで作成されたルートビューコントローラーがあります。

このView ControllerのviewDidLoad()は、スライディングメニューの表示/非表示のスワイプを追跡するpanGestureRecognizerを作成します。このpanGestureRecognizerはタッチしていませんでした。

panGestureRecognizer.cancelsTouchesInView = false 
関連する問題