いくつかのビューをアニメーション化してanimateWithDuration:
いますが、それらのタッチを検出できません。
シンプルなタッチ処理 ( touchesEnded:
) とtapGestureRecognizer
.
最初にそれらをアニメーション化しましたCGAffineTransformTranslation
が、座標をチェックするとこれができないことに気付いたtouchesMoved:
ので、フレームプロパティをアニメーション化するように切り替えました。アニメーション中にフレームの値が実際には変化していないことにすぐに気づいたので、touchesEnded: のアイデアを削除しました。だから私も動作しないtapGestureRecognizerに変更しました。
すべてのビューで userInteraction を有効にUIViewAnimationOptionAllowUserInteraction
し、アニメーションにもオプションを追加しました。
アニメーションのコードとその前に発生するものは次のとおりです。
// init the main view
singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapOnItem:)]; // singleFingerTap is an ivar
// code somewhere:
// userItem is a subview of MainView
[userItem addGestureRecognizer:singleFingerTap];
[UIView animateWithDuration:animationTime
delay:0.0f
options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
animations:^{
userItem.frame = CGRectMake(-(self.bounds.size.width + userItem.frame.size.width), userItem.frame.origin.y, userItem.frame.size.width, userItem.frame.size.height);
}
completion:^(BOOL finished) {
if (finished) {
[unusedViews addObject:userItem];
[userItem removeFromSuperview];
[userItem removeGestureRecognizer: singleFingerTap];
}
}
];
ジェスチャ認識機能は次のとおりです。
- (void) handleTapOnItem:(UITapGestureRecognizer *)recognizer{
NSLog(@"Touched");
}
では、アニメーション化されたビューから実際にタッチするにはどうすればよいですか、または最良の解決策は何ですか? 各ビューに透明な uibutton を追加することはできません。:(