2012-11-19 36 views
1

我有一個簡單的iPhone應用程序,它有一個簡單的視圖和一個自定義視圖。孩子只是在主視圖上畫的一個方形。MonoTouch在控件上跟蹤移動

我需要跟蹤一個觸摸事件,該事件進入這個子視圖,但是從在視圖之外開始的觸摸。

我到目前爲止試過的是將TouchesBegin/TouchesMoved事件添加到父視圖。也嘗試直接添加到子控件,但不跟蹤在該控件中未啓動的任何觸摸。

問題是:

a)我能以某種方式從位置獲取控件嗎?

b)這是做這件事的最好方式,還是有另一種方式?

同樣,我在遊戲中加入了這段遊戲的視頻,我嘗試移植到遊戲中(閒暇時)。這不是一種促銷嘗試,而是說明了我正在努力完成的事情。我寫了遊戲的Win8和WP7版本,所以我不想複製另一個人在這裏工作。 :)如果你不想知道它是什麼遊戲,不要看它。沒有看到這個問題,這個問題仍然有效。

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

感謝

//約翰

+0

好的,謝謝,我對於SO的工作原理有點新鮮。 (雖然很長時間註冊)! –

+1

在那裏,我們很難記住什麼答案是正確的,但有趣的旅行記憶通道。哦,所有這些舊的任務...:D –

回答

1

我無意中發現自己的答案。在父母我重寫TouchesMoved(和開始和結束未顯示在這裏)。

然後我迭代子視圖和chech,如果它是我正在尋找類型的視圖,然後檢查幀是否包含點。下面的代碼當然只是概念。

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

也改變行 var rp = touch.LocationInView(touch.View); 至 var rp = touch.LocationInView(this.View); 使座標系統表現更好。 –