MonoTouch跟踪控件上的移动

时间:2012-11-19 07:33:56

标签: xamarin.ios

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

我需要跟踪一个触摸事件,该事件进入此子视图,但是从视图外部开始的触摸中进行跟踪。

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

问题是:

a)我能以某种方式从位置获得控件吗?

b)这是这样做的最佳方式,还是有另一种方式?

再一次,我将GamePlay的这个视频包含在我想要移植的游戏中(我的业余时间)。这不是促销尝试,而是说明了我正在努力实现的目标。我写了Win8和WP7版本的游戏,所以我不想复制另一个人在这里工作。 :)如果你不想知道它是什么游戏,不要看它。如果不注意这个问题,这个问题仍然有效。

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

由于

// Johan

1 个答案:

答案 0 :(得分: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");
                }
            }
        }
    }