2012-02-25 10 views
2

私はルートビューとしてUIScrollViewを持ち、親ビューと呼ばれるUIImageViewをルートビューのサブビューとして持っています。次に、親ビューのサブビューとして別のUIImageView(子ビューと呼ぶ)を追加します。子ビューは親ビューの境界に含まれていません。これは私のビューレイアウトの視覚的表現です。iOS:子ビューのジェスチャーが認識されない

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

子ビューにUIPanGestureRecognizerを追加すると、そのジェスチャは認識されません。私はuserInteractionEnabledとすべてをチェックしました。子ビューをルートビューのサブビューとして設定すると、ジェスチャが正しく認識されます。誰もがこの問題の原因を知っていますか?あなたのchildviewため

答えて

5

私はあなたがその親の境界に表示されていないものにUIGestureRecognizerを追加しましたので、この問題が発生していると思います。 clipsToBounds = YESに設定した場合、childViewは表示されません。それはそれが扱われる方法です。あなたはそれを見るかもしれませんが、 "そこにはありません"。

それはこのようなものだ:あなたは台所にいる、あなたは、リビングのテレビを聞くことができますし、あなたはそれがあります知っが、あなたがそれを見ることはできません。一方、壁が目に見えない場合は、それを見ることができますが、壁に触れることはできません。あなたは壁を歩くことができないからです。

これはどんなヘルプにも期待しています。

+0

それも私が考えるものです。しかし、私は子ビューを一緒に動かすことができるように、親ビューにアタッチする必要があります。サブビューを使用せずにこれを達成する方法はありますか? –

+0

親ビューとしてUIViewを使用し、両方の画像をこの画像に追加し、画像の1つではなくUIViewにGestureRecognizerを添付することができます。これは、大きなビューを移動するときにemの両方を移動させます。 – hellozimi

+0

私はこれを私の質問の答えとして受け入れます。これは、この種の状況に遭遇することはあまり一般的ではないので、他のiOSプログラマーには役立ちます。 –

0

設定tag

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

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

私はすでにUIGestureRecognizerを子ビューに追加しました。問題は、ジェスチャーが認識されない、つまりタップやパンなどに表示が応答しないということです。 –

+0

私はそれを試しましたが、あなたは正しいライアンです。動作しません。サブビューを追加するときは、親ビューのサイズを変更する必要があります。おそらくsizeThatFitsメソッドをオーバーライドする必要があります。 – Franck

関連する問題