1

子供の頃のシンプルなビューとカスタムビューを備えたシンプルなiPhoneアプリがあります。子供はメインビューに描かれた正方形です。

この子ビューに入るタッチイベントを追跡する必要がありますが、ビューの外側で開始されたタッチからです。

これまでに試したことは、TouchesBegin/TouchesMovedイベントを親ビューに追加することです。また、子コントロールに直接追加しようとしましたが、そのコントロール内で開始されていないタッチは追跡されません。

質問は次のとおりです。

a)どういうわけかPositionからコントロールを取得できますか?

b)これはこれを行うための最良の方法ですか、それとも別の方法がありますか?

繰り返しになりますが、(暇なときに)移植しようとしているゲームのゲームプレイのこのビデオを含めます。これは宣伝の試みではありませんが、私が達成しようとしていることを示しています。私はゲームのWin8とWP7バージョンを書いたので、ここで他の人の作品をコピーしようとはしていません。:)それがどんなゲームか知りたくないのなら、それを見ないでください。質問はこれを見なくてもまだ有効です。

http://www.youtube.com/watch?v=13IczvA7Ipo

ありがとう

//ヨハン

4

1 に答える 1

1

私は自分で答えに出くわしました。親では、TouchesMovedをオーバーライドします(そして、BeginとEndedはここには表示されていません)。

次に、サブビューを繰り返し、タイプ別に探しているビューであるかどうかを確認してから、フレームにポイントが含まれているかどうかを確認します。以下のコードはもちろん単なる概念です。

    public override void TouchesMoved (NSSet touches, UIEvent evt)
    {
        base.TouchesMoved (touches, evt);

        UITouch touch = touches.AnyObject as UITouch;

        if (touch != null) {
            var rp = touch.LocationInView (touch.View);

            foreach(var sv in this.View.Subviews)
            {
                if(!(sv is LetterControl))
                    continue;

                if(sv.Frame.Contains (rp))
                {
                    Console.WriteLine("LetterControl found");
                }
            }
        }
    }
于 2012-11-19T08:14:02.347 に答える