2017-07-05 4 views
0

UITapGestureRecognizerは、シングルタップとダブルタップの両方を処理するために2つあります。アクション機能でUIGestureRecognizerのプロパティを切り替えることができないのですが

let doubleTap = UITapGestureRecognizer(
    target: self, action: #selector(viewController.handleDouble) 
) 
doubleTap.numberOfTapsRequired = 2 
myview.addGestureRecognizer(doubleTap) 

let singleTap = UITapGestureRecognizer(
    target: self, action: #selector(viewController.handleSingle) 
) 
singleTap.numberOfTapsRequired = 1 
singleTap.require(toFail: doubleTap) 
myview.addGestureRecognizer(singleTap) 

そしてhandelDoublehandleSingle機能はダブルとシングルタップを処理している:私のコードは次のようです。これは完璧に機能します。

今、私は両方のケースを処理するために1 UITapGestureRecognizerを作成したい、のようなもの:

let tap = UITapGestureRecognizer(
    target: self, action: #selector(viewController.handleTap(recognizer:)) 
) 
myview.addGestureRecognizer(Tap) 

そして、私はこのように書いたhandelTap機能で:

func handleTap(recognizer: UITapGestureRecognizer) { 
    switch recognizer.state { 
    case .ended: 
     if (recognizer.numberOfTapsRequired = 2) { 
      // to do something with double tapping 
     } else { 
      // to do something with single tapping 
     } 
    default: break 
    } 
} 

はしかし、これはそうではありません作業。より奇妙なのは、ダブルタップすると、シングルタップが発生するということです。

これはUISwipeGestureRecognizerにも起こります。どちらの方向を選択するにも1つの機能を使用できないためです。

このような作業のために複数のUIGestureRecognizerインスタンスしか作成できないのですか?

答えて

0

numberOfTapsRequiredsingleTap2と同じです。正しい値は1

let singleTap = UITapGestureRecognizer(
    target: self, action: #selector(viewController.handleSingle) 
) 
singleTap.numberOfTapsRequired = 2 
singleTap.require(toFail: doubleTap) 
myview.addGestureRecognizer(singleTap) 
+0

だと思いますが、まだ質問は残っています –

関連する問題