2016-09-09 34 views
0

私は、各セルを長いプレスのジェスチャーに応答させたいtableViewを持っています。複数の表のセルにジェスチャー認識機能をロードできません

ジェスチャ認識器をプロトタイプセルに付け、tableViewControllerのスウィフトコードのIBActionに接続しました。

私は、アプリケーションを実行すると、最初のセルが正常に読み込まれ、長いプレスジェスチャーとエラーに応答します。

私は、テーブルに別の項目を追加すると、私はこのエラーを取得する:

2016-09-09 12:56:52.963 Day Care Register[1044:222155] WARNING: A Gesture 
recognizer (<UILongPressGestureRecognizer: 0x7906a220; state = 
Possible; view = <Day_Care_Register.DogTableViewCell 0x799c2c00>; 
target= <(action=dogMarkedForBoarding:, target= 
<Day_Care_Register.DogTableViewController 0x7906aa10>)>>) was setup in 
a storyboard/xib to be added to more than one view (-> 
<Day_Care_Register.DogTableViewCell: 0x7a1bac00; baseClass = 
UITableViewCell; frame = (0 0; 600 90); clipsToBounds = YES; 
gestureRecognizers = <NSArray: 0x79180200>; layer = <CALayer: 
0x7916cbe0>>) at a time, this was never allowed, and is now enforced. 
Beginning with iOS 9.0 it will be put in the first view it is loaded 
into. 

OK、私はこの権利を理解していれば、私は複数のセルの上に同じジェスチャー認識器を使用することはできませんので、?

どうすれば修正できますか?

あなたが見たいコードがわからないので、何かを見たいと思っている場合は、コメントでお気軽にお問い合わせください。できるだけ早くご提供します。

+0

UITableViewCellごとにUIGestureRecognizerを作成する必要があります.1つのジェスチャ認識器を1つのビューに対してのみ割り当てることができます。 –

+0

私はそれをする方法がわかりません....私は私がストーリーボードのセルに認識装置をドラッグしたときに持っていたと思った –

+0

ドラッグアンドドロップUIGestureRecognizerはInterface Builderのプロトタイプセルに接続し、長押し。 もう1つのオプションは、コードを使用してUILongGestureRecognizerを作成してセットアップすることです。これを行う最善の方法はawakeFromNib()メソッドです。 –

答えて

0

私は過去にこれをやった方法は、それをフォームのターゲットセレクタを割り当てる、のUITableViewControllerのためのジェスチャー認識を作成することです:

func handleLongPress(recognizer: UILongPressGestureRecognizer) 

あなたはhandleLongPress(_ :)を実装する場合のことができます。助け

func handleLongPress(recognizer: UILongPressGestureRecognizer) -> Void { 
    guard let touchPoint : CGPoint = recognizer.locationInView(self.tableView) else { return } 
    let cellInFocus : UITableViewCell? = { 
     for cell in self.tableView.visibleCells { 
      if cell.frame.containsPoint(touchPoint) { 
       return cell 
      } 
     } 
     return nil 
    }() 

    guard let _ = cellInFocus else { return } 

    // Take desired action with cell... 

} 

希望可視セルのフレームがポイントrecognizer.locationInView(Self.tableView)が含まれているかどうかをテストし、テーブルビューで可視セルを反復処理!

関連する問題