2

私はaを持っており、そのサブビューとしてUIView複数を持っています。これらのサブビューのそれぞれにUIImageView's追加しました。UILongPressGestureRecognizerこのジェスチャは、送信者に対してアニメーションを実行する方法で処理しUIImageViewます。

一度に2つ長押しImageView'sすると、アニメーションが中断します。

複数の長押しジェスチャを同時に無効にする方法はありますか?つまり、 UIImageViewLongPressジェスチャを検出できるのは1つだけです。

4

2 に答える 2

7

問題を解決するには、実際にはいくつかの方法があります。

exclusiveTouchすべての画像ビューでYESに設定します。同じウィンドウ内の他のビューへのタッチイベントの配信をブロックします。

または、レコグナイザーの1つが開始状態に移行したときに、他のレコグナイザーを無視するようにフラグを設定できます。

enabledまたは、デリゲートメソッドで現在のものを除いてジェスチャレコグナイザー(UIGestureRecognizerにはプロパティがあります)を無効にし、ジェスチャが終了したときにすべてを再度有効にすることができます。

于 2012-05-29T17:41:36.890 に答える
1

使用していて、同時に1つのセルのみを操作したい場合にも、この問題に対処できます。TableViewControllerUILongPressGestureRecognizer

まず、CustomCellで静的変数を定義する必要があります。

static var isLongPressInProgress = false

次にgestureRecognizerShouldBegin、ジェスチャーを使用できるかどうかを示します。

override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {        
    if let _ = gestureRecognizer as? UILongPressGestureRecognizer {
        if CustomCell.isLongPressInProgress == true {
          return false
        }
      return true
     }
  return false
 }

の変数をtrueisLongPressInProgressに設定し、の変数をfalseに設定しますcase .Began:case .Ended:

于 2016-07-03T08:36:20.970 に答える