2016-09-02 10 views
1

私は、別のViewControllerの上にある透明なViewControllerからタッチを渡す方法を探しています。私はすでに、次の記事に出くわした:他のViewControllerへのタッチをクリアする

How to ignore touch events and pass them to another subview's UIControl objects?

私はそれらの先端に続くが、それは、残念ながら動作させることができませんでした。 collectionview外で、それは新しいレコードを実行する必要がありpassThroughViewの背後にあるrecordbuttonをタップすると

VideoViewController (note: clear ViewController can see the buttons underneath) 
| passThroughView (note: UIView that is using the PassThroughView subclass) 
| collectionView 
CameraViewController 
| controlContainer 
| | recordButton 

私は上から下へ、次のビュー構造を得ました。問題は、次のコードで、私はそれを起こらせることができないということです。

class PassThroughView: UIView { 
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 
     let hitView = super.hitTest(point, with: event)! 
     let cameraVC = CameraViewController() 

     if hitView == self { 
      return cameraVC.recordButton 
     } 

     return hitView 
    } 
} 

とすぐに私のpassThroughViewは、私はif文の印刷を取得するタップを取得しますが、それは他のViewControllersボタンに私のタッチを返さないよう。

ここで私は何が間違っていますか?

答えて

1

私はTapGestureRecognizerを使用するようにして、特定の座標に何をすべきかを決定することを好む:あなたの一番上のViewControllerの

内部のviewDidLoad:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.didRecognizeTapGesture(gesture:)))   
self.view.addGestureRecognizer(tapGesture) 

同じコントローラ内のメソッドを追加します。

func didRecognizeTapGesture(gesture: UITapGestureRecognizer) 
{ 
    let point = gesture.location(in: gesture.view)   
    if(gesture.state == UIGestureRecognizerState.ended) { 
     let desiredFrame = CGRect(...) //e.g the portion of screen, where you need to make exceptional touch event 
     if(desiredFrame.contains(point)) { 
      print("... Caught a gesture") 
     } 
    } 
} 
+0

私はこのトリックを知っていましたが、問題は私がこれを使用するとボタンタップ効果が消えてしまい、すべてをシミュレートする必要があるということです。他のViewControllerのレコードボタンをターゲットにする方法はありませんか? – Wouter125

+1

ボタンのタッチイベントをキャッチするために、これはあなたの状況を処理することができると思う:http://stackoverflow.com/a/3348532/661022 – pedrouan

+0

私は努力に感謝しますが、残念ながらそれは私が探しているものではありません。これは、私の場合でさえ持っていないタップ感覚認識装置を追加します。私は私のタッチを無視し、その下のviewcontrollerにそれらを渡すviewcontrollerが必要です。盗聴認識装置ではありません。それでも、私は私のCollectionViewで対話性を維持する必要があります – Wouter125

関連する問題