Xamarin.ios 控制装置上的单触式跟踪运动

Xamarin.ios 控制装置上的单触式跟踪运动,xamarin.ios,Xamarin.ios,我有一个简单的iPhone应用程序,有一个简单的视图和一个自定义视图。孩子只是画在主视图上的一个正方形 我需要跟踪进入此子视图的触摸事件,但从视图外部开始的触摸 到目前为止,我尝试将TouchesBegin/TouchesMoved事件添加到父视图中。还尝试将直接添加到子控件,但不会跟踪未在该控件内启动的任何触摸 问题是: a) 我能从位置控制吗 b) 这是做这件事的最好方法,还是有别的方法 再一次,我把这段游戏视频放在我想移植的游戏中(在业余时间)。这不是一次晋升尝试,但说明了我正在努力实现的

我有一个简单的iPhone应用程序,有一个简单的视图和一个自定义视图。孩子只是画在主视图上的一个正方形

我需要跟踪进入此子视图的触摸事件,但从视图外部开始的触摸

到目前为止,我尝试将TouchesBegin/TouchesMoved事件添加到父视图中。还尝试将直接添加到子控件,但不会跟踪未在该控件内启动的任何触摸

问题是:

a) 我能从位置控制吗

b) 这是做这件事的最好方法,还是有别的方法

再一次,我把这段游戏视频放在我想移植的游戏中(在业余时间)。这不是一次晋升尝试,但说明了我正在努力实现的目标。我编写了Win8和WP7版本的游戏,所以我不想复制其他人在这里的工作。:)如果你不想知道这是什么游戏,就不要看。如果不看这个,这个问题仍然有效

谢谢


//约翰

我自己也无意中找到了答案。在父级中,我覆盖触摸移动(此处未显示开始和结束)

然后迭代子视图,按类型检查它是否是我要查找的视图,然后检查帧是否包含该点。下面的代码当然只是一个概念

    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");
                }
            }
        }
    }

我自己偶然发现了答案。在父级中,我覆盖触摸移动(此处未显示开始和结束)

然后迭代子视图,按类型检查它是否是我要查找的视图,然后检查帧是否包含该点。下面的代码当然只是一个概念

    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");
                }
            }
        }
    }

好的,谢谢,我对SO的工作方式有点陌生。(虽然注册时间很长)!我们开始了,有点难记住什么答案是正确的,但这是一次有趣的记忆之旅。哦,所有这些旧作业…:DOk,谢谢,我对SO的工作方式有点陌生。(虽然注册时间很长)!我们开始了,有点难记住什么答案是正确的,但这是一次有趣的记忆之旅。哦,所有这些旧作业…:DAlso更改行var rp=touch.LocationInView(touch.View);to var rp=touch.LocationInView(this.View);使坐标系表现更好。同时更改行var rp=touch.LocationInView(touch.View);to var rp=touch.LocationInView(this.View);使坐标系表现得更好。