uitapgesturerecognizer初期化時にステージで見えるアイテムに対してのみ動作する

StackOverflow https://stackoverflow.com/questions/3568035

質問

したがって、ループを繰り返して作成します UIViewsを含む UIImageViews(特定の部分を選択的に表示できるように)。これらは UIViewsはすべてaに保存されます UIScrollView.

ジェスチャー認識者をに追加します UIView私がそれらを作成したループにs。

私がプログラムを実行するとき、最初に内部で見えるアイテムのみが UIScrollView ジェスチャーを認識してもらいます。以前に隠されたアイテムにスクロールしてからタップすると、何も起こりません(ジェスチャーは認識されたり、試みられたりすることはありません)。

初期化コード:

UITapGestureRecognizer* gestRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
  gestRec.delegate = self;

  [imageholder addGestureRecognizer:gestRec];

ジェスチャーを扱うコード:

- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
 float count = [self._imageHolders count];
 NSLog(@"handling gesture: %f",count);
 while(count--){
  UIView* object = (UIView*) [self._imageHolders objectAtIndex:count];
 // NSLog(@"Whats going on: %@, %@, %b",object,gestureRecognizer.view, object == gestureRecognizer.view);
  if(object == gestureRecognizer.view){
   object.alpha = .1;
   count = 0;
  }
 // [object release];
 }
}

何か案は?

- - アップデート :

さまざまな機能を調査しました scrollview, UIView そして、ジェスチャーの認識者であり、何かがそのように切り取られた場合に備えて境界をいじることを試みました...興味深いことに、1つのアイテムが部分的に見えるだけで、それを動かして完全に見える場合、元々見える部分のみが認識されます。ジェスチャー。

ジェスチャー認識者がどのように機能するかについては十分に知りません UIKit この問題を理解するためのアーキテクチャ。ジェスチャーを備えたScrollviewのAppleの例は、この問題を抱えているようには見えませんが、本当の違いは見つかりません。 UIImageViews 彼ら自身の中で UIViews

役に立ちましたか?

解決

同様の問題がありましたが、サブビューをトップレベルのビューに追加し、そのトップレベルビューをスクロールビューに追加することが原因であることがわかりました。トップレベルのビューは、スクロールビューのコンテンツ化(境界ではなく)と同じ次元にサイズを付けなければなりませんでした。

他のヒント

を設定してみてください cancelsTouchesInView 財産への財産。

UITapGestureRecognizer* gestRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
  gestRec.delegate = self;
  **gestRec.cancelsTouchesInView  = NO;**

  [imageholder addGestureRecognizer:gestRec];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top