2014-10-30 22 views
0

我有一個iPad應用程序如下界面:UIPanGestureRecognizer不在SuperView區域外被UIImageView觸發?

enter image description here

這裏是發生了什麼事情的解釋:

  1. 藍色區域是連接到(顯示)的ViewController觀。
  2. 黃色區域是UIImageView,用戶可以在其中拖動項目(我稱之爲活動區域)。黃色是藍色區域的子視圖。
  3. 紅色項目是一個UIImageView,附帶了UIPanGestureRecognizer。它是黃色區域的子視圖。
  4. 只要拖動從實況(黃色)區域內開始拖動,就可以拖動紅色項目。

關於上面顯示的圖像的情況,我希望能夠從其表面上的任意點拖動紅色的項目。 (不僅來自與(黃色)區域相交的區域)

任何想法?

謝謝!

回答

2

視圖在觸摸範圍之外時不響應觸摸。您可以通過使紅色視圖成爲藍色視圖的子視圖而不是黃色視圖來解決問題。

0

rdelmar有最乾淨的方式來做到這一點。

但是,如果你想保持你的視圖體系結構,你可以爲你的黃色視圖製作一個YellowClass,UIImageView的子類。並實現下面的代碼在你的YellowClass:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (!self.clipsToBounds && !self.hidden && self.alpha > 0) { 
     for (UIView *subview in self.subviews.reverseObjectEnumerator) { 
      CGPoint subPoint = [subview convertPoint:point fromView:self]; 
      UIView *result = [subview hitTest:subPoint withEvent:event]; 
      if (result != nil) { 
       return result; 
      } 
     } 
    } 

    return nil; 
} 

YellowView子視圖是yellowView外將響應觸摸。

this post中讀取。

相關問題