2012-02-25 57 views
2

我有一個UIScrollView作爲我的根視圖,和一個UIImageView(我們稱之爲父視圖)作爲根視圖的子視圖。然後我添加另一個UIImageView(拉特的稱之爲子視圖)作爲父視圖的子視圖。子視圖不包含在父視圖的邊界中。這是我的視圖佈局的可視化表示。iOS:手勢在子視圖不被識別

................................ 
.  root view    . 
.     ......... . 
. .............. . child . . 
. .parent view . . view . . 
. .............. ......... . 
.        . 
................................ 

現在,當我加入UIPanGestureRecognizer給孩子看,手勢無法識別。我檢查了userInteractionEnabled和一切。當我將子視圖設置爲根視圖的子視圖時,該手勢被正確識別。有誰知道是什麼原因導致這個問題?

回答

5

我想是因爲你已經添加了一個UIGestureRecognizer的東西,是不可見在其父母的界限這個問題引起的。如果您在父視圖上設置clipsToBounds = YESchildView未顯示,對嗎?這就是它被治療的方式。你可能會看到它,但「它不在」。

是這樣的:你在廚房裏,你可以聽到在客廳的電視,你知道它的存在,但你不能看到它。另一方面,如果牆壁是隱形的,你可以看到它,但你不能與它互動。因爲你不能穿過牆壁。

希望這是對任何幫助。

+0

這就是我的想法。但我需要將子視圖附加到父視圖,以便它們可以一起移動。有沒有辦法實現這一點,而不使用子視圖? – 2012-02-25 13:53:21

+0

您可以使用UIView作爲父視圖,並將兩個圖像添加到此視圖中,然後將GestureRecognizer附加到UIView而不是其中一個圖像。當您移動大視圖時,這將使兩者都移動。 – hellozimi 2012-02-25 15:26:03

+0

我接受這個作爲我的問題的答案。這對其他iOS程序員會有幫助,因爲遇到這種情況並不常見。 – 2012-02-28 08:25:14

0

套裝tag您childview:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
      initWithTarget:self 
        action:@selector(singleTapGestureCaptured:)]; 
[[rootview viewWithTag:111]addGestureRecognizer:singleTap]; 

-(void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture 
{ 
    //your code; 
} 
+0

我已經將UIGestureRecognizer添加到我的子視圖。問題是手勢不被識別,即視圖不響應攻絲,平移等。 – 2012-02-25 12:42:11

+0

我試過了,你說得對Ryan,它不起作用。添加子視圖時,應該調整父視圖的大小。您可能必須重寫sizeThatFits方法。 – Franck 2012-02-25 13:10:47