uitapgesturerecognizer初期化時にステージで見えるアイテムに対してのみ動作する
-
01-10-2019 - |
質問
したがって、ループを繰り返して作成します UIView
sを含む UIImageView
s(特定の部分を選択的に表示できるように)。これらは UIView
sはすべて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];