2016-08-10 20 views
0

もう1つのコントローラを表示する長い押しジェスチャがあります。表示されたコントローラでは、View Controllerに触れることを検出するtouchesBegan()、touchesMoved()、およびtouchedEnded()メソッドがあります。他のView Controller(iOS)にタッチを渡す

長押しすると、次のビューコントローラが表示されます。長いプレスを放しても画面上で指を動かさないと、touchesMoved()メソッドが呼び出されず、タッチを止めるとtouchesEnded()は呼び出されません。しかし、長押しのタッチを解除してもう一度触れると、長押しのジェスチャ認識装置はもはや接触を受けず、提示されたビューコントローラがタッチを受け取るため、これらのメソッドが呼び出されます。

長押しをしながら、提示された画面がタッチを認識することはありますか?この長いプレスレコグナイザを次のビューコントローラに渡すにはどうすればよいですか?

答えて

1

ジェスチャ認識機能はビューに存在します。ビューが一時的に消えてしまった別のビューコントローラーを表示したとき。その消滅がこの問題の原因です。解決策は、実際に別のビューコントローラを提示するのではなく、それを真似することです。あなたの最初のビューコントローラーであなたの最初のビューを描きます(私たちはこのview1と呼ぶでしょう)。正確なサイズの別のビューを作成し、上に置きます(このview2と呼ぶ)。ジェスチャ認識プログラムをview2に配置します。ユーザーは画面を長押しする。 VIEW2は、次のようにユーザーがVIEW1に触れた場所を見つけることができますタッチだにもかかわらず:この時点で

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    if let touch = touches.first { 
     let position :CGPoint = touch.locationInView(view1) 
    } 
} 

をあなたはVIEW2背後view3にとVIEW1の前でアニメーション化することができます。これにより、新しい画面に行く効果が得られますが、タッチコマンドを受け取ったビューは決してどこにも行かず、コマンドを聞いています。

+0

病気に撃つ!ありがとうございました –

関連する問題